2

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.

4

2 回答 2

3

看起来很奇怪

A(ob);

相当于

A ob;

在你的代码中。

于 2013-09-26T19:18:23.943 回答
3
A(ob); 

等同于:

A ob; 

牙套是多余的。因此,以下内容与上述相同:

A((ob)); 
A(((ob))); 
A((((ob)))); 

都是等价的。但这并不意味着你应该写这个。只写更容易阅读的内容。

于 2013-09-26T19:20:26.657 回答