构造函数,析构函数 知识补漏

1.析构函数没有形参。因不能指定任何形参,所以不能重载析构函数虽然可为一个类定义多个构造函数,但只能提供一个析构函数,应用于所有类。

  即使我们编写自己的析构函数,合成析构函数仍然运行。合成析构函数按对象创建时的逆序撤销每个非static成员,对于类类型的每个成员,合成析构函数调用该成员的析构函数来撤销对象。

 

2.构造函数,析构函数没有返回值。

3.构造函数,析构函数不能为const函数 //error,“const”“this”指针对于构造函数/析构函数是非法的

4.析构函数可以显式调用,

A*a=static_cast<A*>(operator new(sizeof(A)));

new (a) A;

a->~A();

显式调用析构函数的效果是适当地清除对象本身,并没有释放对象所占的内存。

 

那么是否可以显式调用构造函数,有网友说“个人可以自己把自己创造出来么?回答是显然的.而显视调用析构就好像一个人自己自杀了一般,是支持的. ”

A a;

//a.A();error,“函数样式转换”: 位于“.”运算符右边时非法

a.operator A();
a.A::A();

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值