我知道C++中没有返回类型的构造函数
但是,下面的代码编译正确.下面的代码中的构造函数返回了什么?
class A{
public:
A() {}
}
A a = A(); //what is returned by A() here, why?
Run Code Online (Sandbox Code Playgroud)
这里有冲突吗?
ava*_*kar 18
构造函数没有返回任何内容.语法A()
不是构造函数调用,它创建一个类型的临时对象A
(并在进程中调用构造函数).
您不能直接调用构造函数,构造函数被称为对象构造的一部分.
在您的代码中,在构造临时期间,将调用默认构造函数(您定义的构造函数).然后,在构造期间a
,使用临时作为参数调用复制构造函数(由编译器自动生成).
正如Greg正确指出的那样,在某些情况下(包括这个),编译器可以避免复制构造和默认构造a
(但是复制构造函数必须是可访问的).我知道没有编译器不会执行这样的优化.
归档时间: |
|
查看次数: |
17927 次 |
最近记录: |