目录
- 一、程序及输出
- 1.1 构造函数
- 1.2 析构函数
- 1.3 构造和析构必须要声明在全局作用域
- 二、分析与总结
一、程序及输出
1.1 构造函数
构造函数
没有返回值 不用写void
函数名 与 类名相同
可以有参数 ,可以发生重载
构造函数 由编译器自动调用一次 无须手动调用
创建的时候调用
#include<iostream>
using namespace std;
class Person
{
public: //构造和析构必须要声明在全局作用域Person(){cout << "Person的构造函数调用" << endl;}Person(int a){cout << "Person的(int a)构造函数调用" << endl;}
}
void test01()
{Person p;
}int main(){test01();Person p2(2);system("pause");return EXIT_SUCCESS;
}
输出:
1.2 析构函数
析构函数
没有返回值 不用写void
函数名 与类名相同 函数名前 加 ~
不可以有参数 ,不可以发生重载
析构函数 也是由编译器自动调用一次,无须手动调用
释放的时候调用
#include<iostream>
using namespace std;class Person
{
public:Person(){cout << "Person的构造函数调用" << endl;}Person(int a){cout << "Person的(int a)构造函数调用" << endl;}~Person(){cout << "Person的析构函数调用" << endl;}
}
void test01()
{Person p;
}int main(){test01();Person p2(2 );system("pause");return EXIT_SUCCESS;
}
输出:可以看到test01()函数结束后局部变量p被释放
,p2则是在程序结束后释放
。
1.3 构造和析构必须要声明在全局作用域
二、分析与总结
构造函数和析构函数是 C++ 中特殊的成员函数,它们分别用于对象的初始化和清理工作。下面是对构造函数
和析构函数
的概括总结:
构造函数
(Constructor):
构造函数是一种特殊的成员函数,其名称与类名相同,没有返回类型(包括 void)。
构造函数在创建对象时被自动调用,用于初始化对象的数据成员。
构造函数可以重载,即可以定义多个具有不同参数列表的构造函数,称为重载构造函数。
如果没有定义构造函数,编译器会自动生成默认构造函数,用于执行成员变量的默认初始化。
构造函数可以进行初始化列表初始化成员变量,也可以在函数体内进行初始化。
析构函数
(Destructor):
析构函数是一种特殊的成员函数,其名称以波浪号(~)加上类名构成,没有返回类型(包括 void)。
析构函数在对象生命周期结束时自动调用,用于清理对象所占用的资源,例如释放动态分配的内存、关闭文件等。
如果没有定义析构函数,编译器会自动生成默认析构函数,用于执行成员变量的清理工作。
在类中可以只有一个析构函数,且不能重载。