2016 - 2024

感恩一路有你

构造函数什么时候被调用 C 中,构造函数和析构函数能不能被显示调用?

浏览量:1164 时间:2021-03-14 04:58:26 作者:admin

C 中,构造函数和析构函数能不能被显示调用?

回答是不能。

构造函数和析构函数都是编译器生成调用代码

C 中构造函数和析构函数能不能被显示调用?

1、 C 中, 构造函数和析构函数可以被显示调用. 显示调用默认构造函数的语法: a.A::A()(不能写成a.A()) , 显示调用非默认构造函数的语法: a.A::A(7)(不能写成a.A(7)) 显示调用析构函数的语法: a.A::~A()(可以写成a.~A()) .

2、 显示调用构造函数和析构函数就像调用一般的函数一样, 并不意味着创建或销毁对象

3、 如果构造函数中动态分配了空间, 则显示调用构造函数会造成内存泄露. 创建对象时的隐式构造函数调用已经为对象分配了动态内存,当用创建好的对象显示调用构造函数时, 对象指向的动态内存更新为显示调用时所分配的, 对象生命周期结束时析构函数所释放掉的是后一次分配的动态内存, 也就是说创建对象时隐式构造函数调用所分配的那块内存泄漏了.

4、 如果析构函数中释放动态分配的空间, 则会造成多次释放同一内存, 会出现严重错误.

#include

构造函数什么时候被调用 构造函数调用次数 构造函数的调用顺序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。