用C ++显式构造函数调用

时间:2010-08-01 16:59:22

标签: c++

1)以下陈述的返回值是什么:

obj.classX::classX();

2)关于C ++中构造函数的另一个问题:

 classX(); 

创建一个对象。什么是编译器生成的扩展代码?

3 个答案:

答案 0 :(得分:4)

构造函数不返回值。就像返回void的函数一样。

对于第二个问题,编译器将调用构造函数,然后调用析构函数。

答案 1 :(得分:3)

  1. 它没有返回值。因此,它将被视为void。你实际上不能以这种方式调用构造函数,所以它很重要。
  2. 当然,编译器依赖于编译器,但通常它会在堆栈上分配内存,并调用构造函数在堆栈上构造对象。然后将调用析构函数并将内存返回到堆栈。

答案 2 :(得分:0)

obj.classX::classX();

这是编译时错误。

classX();

这将创建一个classX的临时实例,该实例在语句结尾处被销毁,分区为IOW。