构造函数
构造函数不能定义为虚函数
构造器的执行过程分为两个阶段:初始化和普通计算class Demo {
public:
int value1;
int value2;
Demo(int v1, int v2):value2(v2), value1(v1) { // 初始化
// 普通计算
}
}
初始化阶段中,不在初始化列表的对象执行默认的初始化方法,在初始化列表中的尘缘执行指定的构造方法。在普通计算阶段,也可对初始过的成员变量再做修改。
class Demo { |
初始化阶段不一定顺序执行成员初始化,不能使用某个成员初始化其他成员。
拷贝构造/复制构造函数CLASS_NAME(const CLASS_NAME&); // const可选
如果类没有显式声明一个拷贝构造函数,那么,编译器会自动生成一个进行对象之间非static成员的位拷贝
拷贝函数的调用场景:
- 对象作为函数参数,值传递
- 对象作为函数返回值,以值传递的形式返回
- 对象用于给另外一个对象初始化(赋值初始化)
析构函数:如果没有定义,编译器会提供一个默认的析构函数
类的静态成员:静态成员变量一般要在类外初始化(即使是private)。类的静态方法不能直接访问类的静态成员变量,而类的任何成员函数都能访问类的静态成员。
友元:友元允许特定非成员函数访问一个类的私有成员。友元会破坏类的封装。
可以声明友元类和友元函数。