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

对象的初始化和清理

对象的初始化和清理工作是编译器强制要求做的事情

因此如果不提供构造和析构函数,编译器会提供构造和析构函数自动调用 内容为空

**构造函数:在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用(对类中变量初始化,默认为0,保证程序流畅稳定)

**析构函数:在于对象销毁前系统自动调用,执行一些清理工作

构造函数语法:

类名(){}

1.构造函数,没有返回值也不写void

2.函数名称与类名相同

3.构造函数可以有参数,因此可以发生重载

4.程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 
 4 class Person
 5 {
 6 public:
 7     //构造函数
 8     //没有返回值 不用写void
 9     //函数名 与类名相同
10     //构造函数可以有参数 可以发生重载
11     //创建对象的时候 构造函数会自动调用 且只调用一次
12     Person()
13     {
14         cout << "Person构造函数调用" << endl;
15         //不写构造函数  编译器会自动写 但是内容为空
16     }
17     //析构函数 进行清理的操作
18     //没有返回值  不写void
19     //函数名与类名相同  在类名前 加~
20     //析构函数不可以有参数 不可以重载
21     //对象在销毁前 会自动调用析构函数 且只会调用一次
22     ~Person()
23     {
24         cout << "Person析构函数调用" << endl;
25     }
26 };
27 //构造和析构都是必须有的实现,如果程序员不提供,编译器会提供一个空实现
28 void test()
29 {
30     Person p;//在栈上的数据 test()执行完毕后,释放这个对象
31 }
32 int main() 
33 {
34     test();//输出:Person构造函数调用      Person析构函数调用
35     //p只声明 未调用函数Person()  但系统自己调用了构造函数
36     Person p1;//输出:Person构造函数调用  没有*看到*析构 
37     //因为Main中的p1 在控制台关闭时才会释放 而test()是程序执行完就释放 所以会*看到*
38     system("pause");//这行后释放p1
39     return 0;
40 }
复制代码

析构函数语法:

~类名(){}

1.析构函数,没有返回值也不写void

2.函数名称与类名相同,在名称前加上符号  ~

3.析构函数不可以有参数,因此不可以发生重载

4.程序在对象销毁前会自动调用析构函数,无须手动调用,而且只会调用一次

posted on   廿陆  阅读(11)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示