c++
(】
这个作者很懒,什么都没留下…
展开
-
git/GitFlow使用
给master配备一个develop分支,在本地新建空的develop分支,以后以develop为父分支,推送到服务器。HEAD默认指向分支名。原创 2022-07-25 18:21:05 · 204 阅读 · 0 评论 -
文件操作
对文件进行操作有三个头文件 istream 输入流 ostream 输出流 fstream 文件流,有前两个的功能 写文件,操作步骤 包含头文件 #include <fstream> 创建流对象 fstream fs; 打开文件 fs.open("文件路径", 打开方式); 写数据 fs << "写入的数据"; 关闭文件 fs.close(); 这里的fs是文件读写的通用类名,对于写文件也可以用ofstream 文件的打开方式 读文件 读文件与写文件类似, 再打开文件步骤要检查原创 2021-08-24 21:17:29 · 123 阅读 · 0 评论 -
纯虚函数与抽象类
在多态中,通常父类中的虚函数是毫无意义的,主要实现都在子函数的重写函数里,所以就能把父类中的虚函数写成纯虚函数 当类中有了纯虚函数,这个类就叫抽象类 抽象类的写法也很好写,不写函数大括号,直接在最后写上 = 0; 抽象类的哇特点: 抽象类无法实例化对象 子类必须重写父类的虚函数,否则子类也属于抽象类 上代码: 父类中有纯虚函数,子类继承,子类也属于纯虚函数,不可实例化对象 在看 重写show函数(返回值相同,函数名相同,形参列表相同,void就是没有),所以子类实例化对象就不报错了 ...原创 2021-08-23 21:48:29 · 106 阅读 · 0 评论 -
菱形继承和c++开发人员命令提示工具的使用
菱形继承的问题 菱形继承问题出现在多个子类继承父类的时候,将父类的数据一分为二,问题是在子类又出现了多继承的问题。被一分为二的属性又重新被赋值给了一个子类,本应该就是一份数据,这时确出现了两份,见如下案例 #include <iostream> using namespace std; //菱形继承问题 //羊和驼都继承了动物类,动物中的Age属性被一分为二 //羊驼是羊和驼的后代,子类多继承了父类,对于羊驼来说Age属性发生冲突 class Animal { public: int Ag原创 2021-08-23 21:27:51 · 128 阅读 · 0 评论 -
c++函数重载和函数重写
函数重载:函数名必须一样,形参类型不同,返回值不作为函数重载的判断条件 函数重写:函数名必须相同,形参列表必须相同,返回值必须相同。原创 2021-06-13 15:14:55 · 200 阅读 · 0 评论 -
面向对象的三大特征之二——多态
多态分成两类: 静态多态:函数重载和运算符重载斗叫多态,就是多种形态,,函数名复用。c++中指的多态一般是动态多态。 动态多态:满足条件,要有继承关系,父类中有虚函数,子类重写父类的虚函数,运用父类的指针或引用去指向类的对象。 ...原创 2021-06-13 15:11:49 · 84 阅读 · 0 评论 -
面向对象的三大特征之一——继承
如图所示:派生类B以3种方式继承父类A。 如果是public继承,父类中的成员属性到子类中仍然是是真名属性,不变。 如果是protected继承,在子类中继承得到的父类属性会变化,保护继承,最低的访问权限的就是保护属性(指的是继承得到的属性) 如果是private继承,这种继承方式,得到的父类所有的属性都将变成私有属性 父类中的私有成员,除了友元,用继承的方式,是访问不到的 ...原创 2021-06-13 14:55:15 · 105 阅读 · 0 评论 -
运算符重载
重载+号运算符 在有些时候,比如重载加号运算符,能做一些普通的运算,却无法把两个类相加。可以重新定义+ 运算符 重载+运算符的功能函数就是operator关键字,后边加要重载的符号。 重载运算符可以重载函数,可以写多个版本的重载运算符,(类+类、类+整形、……) 重载运算符函数可以卸载类内也可以卸载类外,一般写在类内能少些一个形参。 class Persion { public: int age; //成员函数重载 Persion operator+(Persion & p); }; Pe原创 2021-06-10 21:33:36 · 396 阅读 · 0 评论 -
类做返回值,链式编程,指针(引用返回),非指针返回
class Persion { public: int age; string name; Persion(int age, string name) { this->age = age; this->name = name; } Persion* addAge(int age) { this->age += age; return this; } }; void text() { Persion p = Persion(0, "sdfds"); //原创 2021-05-31 23:52:15 · 163 阅读 · 0 评论 -
类的占用空间和sizeof计算数组长度
class Persion { }; void text01() { Persion p; int ss[11]; cout << "size of = " << sizeof(p) << endl; cout << "数组总打小: " << sizeof(ss) << endl; cout << "每一个数组元素的大小: " << sizeof(ss[0]) << endl; cout原创 2021-05-31 23:14:36 · 161 阅读 · 0 评论 -
静态成员函数的那些事、静态成员变量
1、类内静态成员函数不属于这个类的某一个对象,它被所有的类对象共用, void text(void) { Persion p; p.func(); Persion::func(); } 静态成员函数有两种调用方式: 对象 去 . 直接用类名冒号也可以,因为毕竟它不属于某一个对象。 2、静态成员函数只能访问静态成员变量,不能访问非静态成员变量 ...原创 2021-05-26 09:08:21 · 167 阅读 · 0 评论 -
当c++类中存在另一个类的对象时
#include <iostream> using namespace std; class Phone { public: string str; Phone(void) { cout << "这是Phone的构造函数" <<endl; } }; class Persion { public: string name; Phone phone; Persion(string name, Phone phone) { cout <<原创 2021-05-25 22:56:38 · 290 阅读 · 0 评论 -
构造函数和拷贝构造、深浅拷贝、new、初始化列表
构造函数和拷贝构造函数 当创建一个类时,c++会自动提供三个函数,默认构造函数、默认拷贝构造函数、析构函数,当用户主动写了某个函数的时候,c++本身就不提供了,比如用户写了有参构造函数,那么c++就不提供默认的无参构造了,对,就是不提供无参构造,虽然你写的是有参构造。 c++提供的默认构造函数,就是空的。 c++提供的默认拷贝构造函数,是简单的值传递,不是空的!!! 当用户手动写了拷贝构造函数之后,很神奇!!,c++就不在提供默认构造函数,意思就是在单纯的创建一个对象会报错的。。。 总结: 1、我写了构原创 2021-05-24 21:44:58 · 282 阅读 · 0 评论 -
c++常识
构造函数和析构函数 构造函数是完成对象的初始化工作 析构函数是完成对象的清理工作 这两个函数也可以不写,但是编译器会帮我们实现,编译器提供一个空实现, 构造函数:在对象被创建的时候自动调用,一般完成变量的额初始化工作 析构函数:对象在被销毁之前,被调用,一般用来执行内存清理工作 构造函数可以有参数,因此可以发生重载,只会调用一次 析构函数不能有参数,因此不能发生重载, 只会调用一次 拷贝构造函数 拷贝构造函数形式 Persion::Persion(const Persion &p) 所谓的拷贝原创 2021-05-22 00:41:38 · 93 阅读 · 0 评论