第一节:成员函数、对象拷贝、私有成员
类的声明和定义写在头文件和源文件中时,倘若多个源文件include了该类的头文件,这里不会出现重复类的重复定义。但是如果换成全局变量就会出现变量重复定义的报错。
第二节 构造函数详解、explicit、初始化列表
构造函数:在创建类的对象的时候,这个特殊的成员函数就会被系统自动调用。用于初始化类对象的数据成员。
(1)构造函数没有返回值,前面也没有void
(2)不可以手动调用构造函数
(3)正常情况下,构造函数应该被声明为public因为类的缺省的成员是私有成员,所以我们必须说明构造函数是一个public函数,否则无法直接创建该类的对象。
(4)构造函数中如果有多个参数,则我们创建对象的时候也要带上这些参数
多个构造函数:一个类中可以有多个构造函数,可以为类的对象提供多种初始化方法,但是对个构造函数之间要有不同的地方。
在函数定声明的时候前面加上explicit
构造函数初始化列表:
第三节:inline、const、mutable、this、stacic
第四节:类内初始化、默认构造函数、=default
第五节 拷贝构造函数
第六节 重载运算符、拷贝赋值运算符、析构函数
重载运算符:
类的对象如何比较相等,我们可以重载运算符来实现
拷贝赋值运算符:
析构函数:
第七节 派生类、调用顺序、访问等级、函数遮蔽
派生类的概念:
派生类对象定义时调用构造函数的顺序 :
当定义子类对象时,是要调用父类和子类的构造函数的,而且,父类的构造函数的函数体先执行,子类的构造函数的函数体后执行。
访问等级:
函数遮蔽:
第八节 基类指针、虚纯虚函数、多态性、虚析构
基类指针、派生类指针:
虚函数:
多态性:
纯虚函数:
基类的析构函数一般写成虚函数(虚析构函数)
第九节 友元函数、友元类、友元成员函数
友元函数:
友元类:
友元成员函数:
第十节 RTTI、dynamic_cast、typeid、虚函数表
RTTI:
此时的phuman不能对Men类中非继承的成员函数进行调用。
dynamic_cast运算符:
typeid运算符:
type_info类 :
PTTI与虚函数表:
第十一节 基类与派生类关系的详细再讨论
派生类对象模型简介:
派生类构造函数:
既当父类又当子类:
不想当基类的类:
静态类型和动态类型:
派生类向基类的隐式类型转换:
父类子类之间的拷贝与复制:
第十二节 左值、右值、左值引用、右值引用、move
引用分类:
左值引用:
右值引用:
move函数:
左值右值总结说明:
第十三节 临时对象深入探讨、解析、提高性能的手段
临时对象的概念:
产生临时对象的情况和解决:三种情况和解决
第十四节 对象移动、移动构造函数、移动赋值运算符。
对象移动的概念;
对象拷贝,c++11“对象移动”
移动构造函数、移动赋值运算符的概念:
移动赋值运算符
合成的移动操作:
第十五节 继承的构造函数、多重继承、虚继承
第十六节 类型转换构造函数、运算符,类成员指针