C++构造函数和析构函数(详解版)

构造函数:它在创建类对象时会自动被调用,用于构造类对象。如果程序员没有编写构造函数,则c++会自动提供一个,当然程序员在创建类时通常会编写自己的构造函数。
构造函数名称必须与他所属类的名称相同,构造函数不允许有返回类型。DEMO::DEMO()

析构函数什么时候加virtual?
首先virtual用于类的多态,当设计一个类,用做其他类的父类时,且有virtual修饰的方法,这些方法可被子类覆盖定义,此时的析构函数必须加virtual。原因如下:上述场景一般使用工厂设计模式,定义一个父类的指针,指向子类的对象,而在delete父类指针时,期望释放对象。但父类析构函数不加virtual修饰,则只会调用父类析构函数,而不调用子类析构函数,导致无法释放子类部分

拷贝构造函数:
一种特殊的构造函数,它在创建对象时,使用用一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:

  1. 通过使用另一个同类型的对象来初始化新创建的对象
  2. 复制对象把他作为参数传递给函数
  3. 复制对象,并从函数返回这个对象

如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则他必须有一个拷贝构造函数。

classname (const classname &obj) {
// 构造函数的主体
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容