Trace_Ivan
2016-12-30 09:08
采纳率: 50%
浏览 1.8k

C++中类对象初始化问题

有个类A(有无参默认构造函数),然后main函数中,定义了一个类A的对象,代码是这样:A a=A();
请问:这是通过A()临时建立一个类对象然后赋给a,然后再释放这个临时对象,还是等价"A a();"?我在构造函数和析构函数中加了输出的调试语句,但却只显示出一次类A的构造和析构

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • oyljerry 2016-12-30 09:21
    已采纳
     A a=A();
    

    这样也是调用的构造函数,只是所谓的复制构造函数。它不会生成临时对象,再拷贝而是只有一次构造析构。

    打赏 评论
  • YXTS122 2016-12-30 11:08

    你改成
    A a;
    a=A();

    这样试试

    1 打赏 评论
  • long13140988 2016-12-30 09:31

    你加拷贝构造函数的A(const A& other)试试

    打赏 评论
  • starcat2002 2016-12-30 10:22

    这样可以生成一个对象,但是过程繁琐而且有隐性问题

    打赏 评论
  • LininCH 2016-12-31 04:55

    在创建对象就初始化时,是调用深拷贝;相同对象之间赋值容易出现浅拷贝(这是不好的结果)。你的A()是创建无名对象,应该调用的是默认构造函数与默认析构函数,这是不会在屏幕输出的。
    PS:说错了的地方请大家指出啊,谢谢。

    打赏 评论

相关推荐 更多相似问题