1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C++构造函数 析构函数

C++构造函数 析构函数

时间:2022-02-07 13:05:48

相关推荐

C++构造函数 析构函数

构造函数 ,析构函数是C++中为对象的初始化和清理而设计的两类成员函数。

举一个实际例子,我们买下的新手机,将手机看作对象,为手机设置北京时间,设置语言等就可以看作是对手机这个对象的初始化操作,而清理内存,删除照片等则可以视为对象的清理操作。而C++中则利用构造函数进行对象的初始化操作,利用析构函数进行对象的清理操作。

构造函数

1.定义:对象创建时自动调用的函数

2.用途:在创建对象时为对象的成员属性(成员变量)赋值(即:初始化操作)

3.语法:类名(参数/无参){函数体}

4.注意

(1)该函数无返回值,且不写void;

(2)函数名称与类名相同;

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

(4)程序在调用对象时会自动调用构造函数,无需手动调用,而且只会调用一次。(比如:手机刚买下后,我们只需一次性设置好主题风格,时间日期等,以后再开关机都不需要再次设置,这就是构造函数只调用一次的例子,只是方便记忆)

析构函数

1.定义:与构造函数相对应,是对象销毁时自动调用的函数

2.用途:对象销毁前系统自动调用,执行一些清理工作

3.语法:~类名(无参){函数体}

4.注意

(1)析构函数与构造函数同样无返回值,且不写void;

(2)函数名称是在类名前加~;

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

(4)程序在调用对象时会自动调用构造函数,无需手动调用,而且只会调用一次。(比如:我们每次开关机之后手机的初始化设置都还在,这就是析构函数只调用一次的例子,若是每次都调用析构函数,则每次开机之后都要像刚买下手机时一样重新设置选项,会很麻烦)

代码部分

在类中,我们可以自己编写构造函数和析构函数,这种情况下编译器将自动调用我们自己写的这两个函数,如果我们自己没有编写,编译器将自动调用它自己提供的构造函数和析构函数,且自己提供的这两者是空实现,即我们在编译运行后看不见。总之,构造函数和析构函数在C++中是系统一定会调用的函数。就像我们买下新手机后,如果不进行初始设置和及时清理内存,删除文件等操作将无法使用或者不能很好的使用。

下面展示构造函数和析构函数是如何调用的

#include<iostream> using namespace std;class Person{public:Person() //自己写的构造函数 {cout << "构造函数调用" << endl; }~Person() //自己写的析构函数 {cout << "析构函数调用" << endl;} }; //无论你写不写析构,系统都会自动调用这两个函数 ,自己写了就执行你的,没写系统自己空调用void set(){Person p; //在栈上的数据,set执行完毕,释放,直接自动调用析构 }int main(){set();//Person p; return 0;}

运行结果:

分析:

从主函数main看起,第一步调用set函数,set函数第一步是创建名称为p的对象,此时进行对象的初始化操作,系统自动调用构造函数(在这里我自己写了构造函数,因此调用我自己写的构造函数并打印出文字,表示构造函数确实被调用),第二步set函数执行完毕,对象p被释放,此时系统自动执行析构函数(在这里我自己写了析构函数,因此调用我自己写的析构函数并打印出文字,表示析构函数确实被调用),若将set()此语句换为Person p语句运行结果同样,原理也相似。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。