目录
- 一、程序及输出
-
- [1.1 构造函数](#1.1 构造函数)
- [1.2 析构函数](#1.2 析构函数)
- [1.3 构造和析构必须要声明在全局作用域](#1.3 构造和析构必须要声明在全局作用域)
- 二、分析与总结
一、程序及输出
1.1 构造函数
构造函数
没有返回值 不用写void
函数名 与 类名相同
可以有参数 ,可以发生重载
构造函数 由编译器自动调用一次 无须手动调用
创建的时候调用
c
#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
函数名 与类名相同 函数名前 加 ~
不可以有参数 ,不可以发生重载
析构函数 也是由编译器自动调用一次,无须手动调用
释放的时候调用
c
#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)。
析构函数在对象生命周期结束时自动调用,用于清理对象所占用的资源,例如释放动态分配的内存、关闭文件等。
如果没有定义析构函数,编译器会自动生成默认析构函数,用于执行成员变量的清理工作。
在类中可以只有一个析构函数,且不能重载。