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

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 

相关文章:

  • 【2025最新】下载安装Anaconda
  • 数据共享中的库表交换怎么做?
  • 二、OpenCV图像处理-几何变换
  • 【CSS border-image】图片边框拉伸不变形,css边框属性,用图片打造个性化边框
  • Docker 与 Kubernetes 部署 RabbitMQ 集群(一)
  • el-table控制type=“expand“展开列 根据条件显示或隐藏展开按钮
  • 什么是DAQ采集卡?它的优势有哪些?
  • 【PINN】DeepXDE学习训练营(32)——pinn_forward-fractional_diffusion_1d.py
  • ES6 新增 API 方法
  • 【通用智能体】Intelligent Internet Agent (II-Agent):面向复杂网络任务的智能体系统深度解析
  • Go语言中为什么map、slice、channel需要var之后还要make一下?
  • Excel多合一文件合并工具
  • QGIS如何打开 ARCGIS的mxd工程文件
  • 怎么判断一个Android APP使用了React Native 这个跨端框架
  • ArcGIS Pro对图斑进行等比例、等面积、等宽度的分割
  • vue 中的v-once
  • 集群、容器云与裸金属服务器的全面对比分析
  • 图形推理_
  • [数据集]无人机视角检测分割数据集合集
  • 【新品来袭】功耗降低56%爱普生研发新款晶体振荡器
  • 厦门做网站找哪家公司/信息流投放
  • 网站平台怎么建设/网站优化排名工具
  • 南山做网站的/谷歌seo关键词排名优化
  • 西宁网站建设君博首选/如何让自己的网站排名靠前
  • 古董交易网站怎么做/百度人工服务
  • 做b2b网站有没有用/在百度上怎么注册网站