当前位置: 首页 > ds >正文

C++构造函数和析构函数

C++构造函数和析构函数

  C++的构造函数和析构函数是类的特殊成员函数,用于对象的创建和销毁,分别在对象的生命周期开始和结束时自动调用。它们的使用对资源管理和对象的初始化/清理至关重要。


1. 构造函数

定义
  • 构造函数在对象创建时自动调用,用于初始化对象的数据成员。
  • 构造函数的名字与类名相同,没有返回值。
特点
  1. 无返回值(即使写void也会报错)。
  2. 可以重载:支持多个构造函数,通过参数列表区分。
  3. 默认构造函数:如果没有定义构造函数,编译器会生成一个默认构造函数。
  4. 隐式调用与显式调用:构造函数可以通过隐式或显式方式调用。
语法
class MyClass {
public:MyClass() { // 默认构造函数std::cout << "Default Constructor called!" << std::endl;}MyClass(int x) { // 参数化构造函数std::cout << "Parameterized Constructor called with value " << x << std::endl;}
};int main() {MyClass obj1;        // 调用默认构造函数MyClass obj2(10);    // 调用参数化构造函数MyClass obj3 = MyClass(20); // 显式调用构造函数return 0;
}
类型
  1. 默认构造函数
    • 无参数或所有参数都有默认值。
    MyClass() {}
    
  2. 参数化构造函数
    • 带参数,用于灵活初始化对象。
    MyClass(int x, int y) {}
    
  3. 拷贝构造函数
    • 通过同类型对象初始化新对象,参数是同类的引用。
    MyClass(const MyClass& obj) {}
    
  4. 移动构造函数
    • 用右值引用初始化对象,提升性能。
    MyClass(MyClass&& obj) noexcept {}
    
  5. 委托构造函数(C++11)
    • 一个构造函数调用另一个构造函数。
    MyClass() : MyClass(0) {}
    
初始化列表

  构造函数使用初始化列表可以高效地初始化数据成员,特别是常量、引用类型或需要自定义构造的成员。

  • 成员变量的初始化顺序与它们在类中声明的顺序一致,而不是在初始化列表中出现的顺序。即使在初始化列表中以不同顺序指定初始化,成员变量的初始化仍按照它们在类中的声明顺序进行。
  • const 成员变量必须在对象构造时初始化,因为它们一旦初始化后就不能被修改。由于这种特性,const 成员变量的初始化只能通过构造函数的初始化列表实现,不能在构造函数体内赋值。
class 
http://www.xdnf.cn/news/8654.html

相关文章:

  • 静态库的使用方法
  • BaseDao指南
  • 生成模型——变分自动编码器(Variational Autoencoders, VAEs)
  • 项目管理进阶:111页 详解华为业务变革框架及战略级项目管理【附全文阅读】
  • LaTeX学习路线
  • 63. 不同路径 II
  • 2.2.1 05年T1复习
  • 1.2 TypeScript 与 JavaScript 的区别
  • Java:堆排序
  • Git教程
  • 龙虎榜——20250523
  • 地形生成原理与实现
  • 【Java】Java元注解
  • 【操作系统】-4.1.8文件共享
  • Unitree 5. GO1 3D打印配件
  • 高通usecase理解
  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之如何形成高斯椭球
  • 【递归、搜索与回溯算法】专题三:穷举vs暴搜vs深搜vs回溯vs剪枝
  • 第十节第八部分:Lambda表达式、Lambda表达式的省略规则
  • YOLOV11网络图和数据增强
  • PotPlayer 4K 本地万能影音播放器
  • 基于厚度变化的分割点定位算法:以瓶口颈部为例
  • 【分组背包 数论】P12160 [蓝桥杯 2025 省 Java B] 2 的幂|普及+
  • MySQL 第五讲---基础篇 表的约束
  • 每个元素后面加“、”,但最后一个元素不加
  • 点云处理的瑞士军刀PCL几何库
  • 基于Java(GUI)实现五子棋
  • 【AI】小参数,大影响:从OpenAI参数看AI开发挑战
  • Python打卡训练营学习记录Day34
  • 文章记单词 | 第104篇(六级)