【发布时间】:2013-09-26 19:13:10
【问题描述】:
A 是这样定义的类:
class A
{
public:
int x;
}
还有主要的:
int main()
{
A(ob); // note that copy constructor doesn't get called
ob.x = 1; // just to show that ob's members can be accessed
}
这是一个不同的 main():
int main()
{
A ob;
A ob2 = A(ob); // copy constructor gets called and everything happens as expected
}
我从未在 c++ 中看到过这样的实例化。 A(ob) 不是应该通过调用 A 的构造函数来进行函数样式类型转换,其中 ob 是先前声明的对象吗?
编辑:在第二个 main() 中,A(ob) 用作 ob2 的初始化器。
【问题讨论】:
-
@Kal 没有可省略的副本。你会从什么地方复制?您刚刚默认构造了一个名为
ob的A。 -
@juanchopanza 是的,我不知道它和
A ob一样,还以为是从ob复制到临时文件中