C++类
当前已学习基本要点:
1.1 类包括成员函数、成员变量,成员函数有基本的构造、析构函数,成员的属性有public、protect、private
1.2 类的大小为成员变量的大小,成员函数为对于一个类只需要存储一份,调用时通过隐性的this指针得到不同对象的运行结果。
1.3 类要有构造函数和析构函数,编译器会添加默认的,两者都是public类型,非public常规用法以后再学习
1.4 如果是基类函数,析构函数最好为虚析构:先构造基类,再构造子类,虚析构先析构子类,再析构基类,不是虚析构则只析构基类
1.5 如果类有动态内存分配,最好自定义拷贝构造:浅拷贝和深拷贝区别
1.6 虚函数表待学习
C++ primer第七章知识点摘要:
1、this指针:任何对类成员的直接访问都被看成this的隐式引用。
2、const成员函数:const关键字放在成员函数的参数列表之后;常量对象以及常量对象的引用或指针都只能调用常量成员函数。
3、类相关的非成员函数:例如入参是某个类,定义和声明一般和类的声明定义放一起。
4、合成的默认构造函数:Sales_data() = default;有构造函数、类中包含的类没有默认构造函数、类内有指针需资源分配等不适合用合成的默认构造函数;
5、初始化:没有出现在构造函数初始值列表中的成员将通过相应的类内初始值初始化,或者执行默认初始化 P238。如果成员是const或者引用,必须将其初始化。P258
赋值:是擦除原来的值,写一个新值。
列表初始化、默认初始化、构造函数初始化、类内初始值:
class ConstRef {
public :
ConstRef(int ii){
i=ii;
ri=i;//报错,ri没有被初始化 这是赋值操作
ci=ii;//报错,不能给const赋值 这是赋值操作
}
ConstRef(int ii):i(ii), ci(ii),ri(i){} //正确,执行了列表初始化,是初始化,不是 赋值,而且i、ci、ri谁先定义先初始化
private:
int i;
const int ci;
int &ri;
int j;// j将执行默认初始化,其值未知
int q=5;// =执行类内初始化 类内初始值:类定义的时候用等号赋值,或者放花括号里面P65
int p{7};// {}执行类内初始化
}
6、struct和class:访问权限,struct都是public的
7、友元:允许访问非公有成员,增加friend权限说明,可以是类,也可以针对类的成员函数,权限说明并非声明。
8、inline: 定义在类内部的成员函数是自动inline的,也可在类外定义的时候添加inline修饰符
9、聚合类:成员都是public,无构造函数,无类内初始值,无基类。
10、类的静态成员:不由类的构造函数初始化,而在类外初始化。

浙公网安备 33010602011771号