构造函数:它在创建类对象时会自动被调用,用于构造类对象。如果程序员没有编写构造函数,则c++会自动提供一个,当然程序员在创建类时通常会编写自己的构造函数。
构造函数名称必须与他所属类的名称相同,构造函数不允许有返回类型。DEMO::DEMO()
析构函数什么时候加virtual?
首先virtual用于类的多态,当设计一个类,用做其他类的父类时,且有virtual修饰的方法,这些方法可被子类覆盖定义,此时的析构函数必须加virtual。原因如下:上述场景一般使用工厂设计模式,定义一个父类的指针,指向子类的对象,而在delete父类指针时,期望释放对象。但父类析构函数不加virtual修饰,则只会调用父类析构函数,而不调用子类析构函数,导致无法释放子类部分
拷贝构造函数:
一种特殊的构造函数,它在创建对象时,使用用一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:
- 通过使用另一个同类型的对象来初始化新创建的对象
- 复制对象把他作为参数传递给函数
- 复制对象,并从函数返回这个对象
如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则他必须有一个拷贝构造函数。
classname (const classname &obj) {
// 构造函数的主体
}