C++构造函数与析构函数

C++构造函数与析构函数,第1张

构造函数语法:类名(){}

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

2.函数名与类名相同

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

4.程序在调用对象时会自动调用构造函数,无需手动

析构函数语法:~类名(){}

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

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

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

4.程序在对象销毁前会自动调用析构函数,无需手动 

构造函数的分类和调用

分类:有参构造函数 、无参构造函数

           普通构造函数、拷贝构造函数

调用:

1.括号法

ps:调用默认构造函数时,不要加(),编译器会认为是函数声明,不会认为是创建对象

2.显示法

ps:等号右边是匿名对象,当前行执行后,系统会回收匿名对象

不要利用拷贝构造函数初始化匿名对象,编译器会认为是“重定义”==对象声明

3.隐式转换法

ps:编译器会自动转化为显示法

//拷贝构造函数
类名 (const 类名 &a)
{
//拷贝内容
}

拷贝构造函数调用时机:

1.使用一个已经创建完毕的对象来初始化一个新对象

2.值传递的方式给函数参数传值

3.值方式返回局部对象

 构造函数的调用规则:

1.构造一个类,C++编译器会至少提供3个函数:

默认构造函数(空实现)、析构函数(空实现)、拷贝构造函数(值拷贝)

2.我们写了有参构造函数,编译器就不再提供默认构造函数,仍会提供拷贝构造函数

3.我们写了拷贝构造函数,编译器就不再提供其他函数

深拷贝与浅拷贝:

编译器所进行的拷贝是浅拷贝

 浅拷贝所带来的问题就是堆区内存的重复释放

深拷贝重新在堆区开辟内存空间

ps:在堆区开辟内存空间后要用析构函数手动删除这部分空间

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/676169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存