c语言基础学习
we1less
学习
展开
-
C++基础(二十一)文件操作
文件打开方式ios::in //读文件打开文件ios::out //写文件打开文件ios::ate //初始位置:文件尾ios::app //追加方式写文件ios::trunc //如果文件存在,先删除再创建ios::binary //二进制方式1.以文本形式 写文件#include <iostream>using ...原创 2020-10-03 23:43:20 · 133 阅读 · 0 评论 -
C++基础(二十)虚析构函数、纯虚析构函数
话不多说上代码#include <iostream>using namespace std;class Animal {public: Animal() { cout << "ani的构造器" << endl; } virtual void sayHello() = 0; string* m_name; //第一种写法 虚析构的写法/* virtual ~Animal() { cout << "ani的析构函数"原创 2020-10-03 22:16:14 · 200 阅读 · 0 评论 -
C++基础(十九)多态、virtual关键字的使用、虚函数、纯虚函数
没啥好说的上代码# include <iostream>using namespace std;class Animals {public: virtual void sayHello() { cout << "Animals salHello~" << endl; }};class Dog :public Animals {public: void sayHello() { cout << "Dog salHel.原创 2020-10-02 23:30:44 · 161 阅读 · 0 评论 -
C++基础(十八)多继承、菱形继承的解决方法、virtual关键字的使用
背景:c++允许多继承 注意:尽量避免多继承继承会继承父类的所有属性(暂不考虑私有属性)这样就会出现菱形继承的情况即基类的属性 两个父类继承 最终子类拥有两个父类相同的基类属性 这样无法区分(可以利用作用域,但是还是出现了资源浪费的情况,和本不该出现两个相同的属性)利用virtual关键字解决该问题#include <iostream>using namespace std;class Animal {public: int m_Age;};c...原创 2020-10-02 23:10:28 · 222 阅读 · 1 评论 -
C++基础(十七)继承、构造析构顺序、访问成员变量规则
c++中存在三种继承方式 注意:任何继承都不可访问父类的私有权限(private)修饰的成员变量公共继承 继承的所有变量保留原来的访问权限保护继承 继承的所有变量的访问权限为 protected私有继承 继承的所有变量的访问权限为 private#include <iostream>using namespace std;class Base {public: int m_Pub;protected: int m_Pro;private...原创 2020-10-02 21:37:31 · 240 阅读 · 0 评论 -
C++基础(十六)运算符重载(=)
#include <iostream>using namespace std;class Godv {public: int* m_Num; Godv(int num) { m_Num = new int(num); } ~Godv() { if (m_Num != NULL) { delete m_Num; m_Num = NULL; } } Godv& operator=(Godv &gg) { if (thi.原创 2020-09-30 23:37:12 · 122 阅读 · 0 评论 -
C++基础(十五)运算符重载(a++ ++a ())
#include <iostream>using namespace std;class MyInteger{ friend ostream& operator<<(ostream& cout, MyInteger myint);private: int m_Num;public: MyInteger(int num) { this->m_Num = num; } MyInteger& operator++() { .原创 2020-09-30 23:37:58 · 564 阅读 · 3 评论 -
C++基础(十四)运算符重载(+ <<)
operator+#include <iostream>using namespace std;class Person {public: int m_Name; int m_Age; Person operator+(Person &p) { Person temp; temp.m_Age = this->m_Age + p.m_Age; temp.m_Name = this->m_Name + p.m_Name; return t原创 2020-09-30 22:28:59 · 131 阅读 · 0 评论 -
C++基础(十三)友元
背景:在类中 私有成员变量无法被类外访问1.全局函数做友元实例代码如下:#include <iostream>using namespace std;class Person { //友元 friend void showDetial(Person* p);public: Person(): m_Age(10), m_Name(20) { }public: int m_Age;private: int m_Name;};void showDe.原创 2020-09-28 23:46:31 · 157 阅读 · 0 评论 -
C++基础(十二)this的使用/常函数常对象
#include <iostream>using namespace std;class Person {public: Person(int age) { this->age = age; } Person& personAdd(int age) { this->age += age; return *this; } int age;};int main() { Person p(10); p.personAdd(.原创 2020-09-28 21:19:58 · 121 阅读 · 0 评论 -
C++基础(十一)初始化列表
话不多说直接上代码#include <iostream>using namespace std;class Person{public: //初始化列表 Person() : p_A(10), p_B(20), p_C(30) { } // Person(int a, int b, int c) :p_A(a), p_B(b), p_C(c) { } int p_A; int p_B; int p_C;};int main() { Pers.原创 2020-09-27 21:08:13 · 99 阅读 · 0 评论 -
C++基础(十)深拷贝与浅拷贝
在利用编译器提供的默认拷贝构造函数时,默认的拷贝构造函数是浅拷贝。(浅拷贝)也就是说,当成员变量是存在于堆中的情况下,默认拷贝构造函数(浅拷贝)只复制引用。这样的话,在析构函数中释放 (delete) 堆中的成员变量时就会出现问题所以为了解决这一问题,将浅拷贝修改成深拷贝,即在拷贝的过程中相对的也在堆中开辟新的空间,此时再进行赋值,这样的拷贝就是深拷贝。这样在析构函数释放资源时就不会出现问题了。#include <iostream>using namespace std.原创 2020-09-26 12:37:17 · 111 阅读 · 0 评论 -
C++基础(九)构造函数和析构函数
构造函数在对象被创建时调用析构函数在对象被销毁时调用class Person{ //构造函数public: Person() { cout << "person 的构造函数被调用" << endl; } //析构函数 ~Person() { cout << "person 的析构函数被调用" << endl; }};前提声明 无参构造函数 有参构造函数 拷贝构造函数class Person{ //构造函数..原创 2020-09-26 11:55:21 · 138 阅读 · 0 评论 -
C++基础(八)struct和class的区别
class 默认权限为私有struct 默认权限为公共示例代码:#include <iostream>using namespace std;#include <string>class Student{ string name;};struct Teacher{ string name;};int main() { Student s1; // s1.name = "godv"; 报错访问不到 Teacher t1...原创 2020-09-25 21:27:05 · 1510 阅读 · 0 评论 -
C++基础(七)引用 指向指针的引用
用途 给变量起别名语法 数据类型 &别名 = 原名注意 新建引用必须初始化 引用不可更改指向本质 本质上就是一个指针常量 int * const p = &a;#include <iostream>using namespace std;int main(){ int a = 10; int& b = a; cout << a << " " << b ...原创 2020-09-15 22:00:04 · 308 阅读 · 0 评论 -
C++基础(六)栈、堆、new关键字、delete关键字
首先更新一点关于常量变量的存储位置全局区: 全局变量 函数体之外的变量 静态变量 static修饰的变量 字符串常量 “godv” const修饰的全局变量 (全局常量)局部变量的声明周期在栈中 不允许返回栈中的地址#include &l...原创 2020-09-15 21:14:05 · 260 阅读 · 0 评论 -
C++基础(五)结构体
创建结构体#include<iostream>using namespace std;#include<string>struct Godv{ string name; int age;}gg3;//第三种创建方式int main() { //第一种创建方式 Godv gg1; gg1.age = 18; gg1.name = "godv"; cout << "gg1 :" << gg1.age << gg1.原创 2020-09-13 20:35:54 · 907 阅读 · 0 评论 -
C++基础(四)指针的理解
指针的用途 通过指针可以访问内存 记录地址编号#include<iostream>using namespace std;int main(){ int a = 5000; int* p = &a; //解引用 cout << "*p = " << *p << endl; *p = 1000; cout << "a = " << a << endl; return 0;...原创 2020-09-13 17:25:26 · 138 阅读 · 0 评论 -
C++基础(三)函数
函数的声明主要是用来解决函数写在后面 前面调用不到的情况#include <iostream>using namespace std;//函数的声明int max(int a, int b);int main(){ int a = 5; int b = 6; int res = max(a,b); cout << res << endl; return 0;}int max(int a, int b) { return a >原创 2020-09-13 16:11:34 · 128 阅读 · 0 评论 -
C++基础(二)cin+goto+数组 + const
1.数据的输入std::cin >> a;#include <iostream>#include <string>int main(){ std::string str2 = "nice"; std::cout << "请输入str的值" << std::endl; std::cin >> str2; std::cout << "输入的str的值为 : " << str2 <<原创 2020-09-13 15:15:17 · 186 阅读 · 0 评论 -
C++基础(一)数据类型
常量的定义1. #define 2.const 注意 #define 的形式不要在结尾写分号了#include <iostream>using namespace std;#define Day 7int main() { const int month = 12; cout <<"一周有 " << Day << "天"<< endl; cout << "一年有 " &...原创 2020-09-13 14:02:58 · 153 阅读 · 0 评论