C++ 当ob是类A的对象时,初始化A(ob)是如何工作的

C++ 当ob是类A的对象时,初始化A(ob)是如何工作的,c++,class,object,C++,Class,Object,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() 我从未见过这样的实例化在C++中。如果ob是以前声明的对象,那么A(ob)不是应该通

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()

<>我从未见过这样的实例化在C++中。如果
ob
是以前声明的对象,那么A(ob)不是应该通过调用A的构造函数来进行函数样式类型转换吗

编辑:在第二个main()中,A(ob)用作
ob2的初始值设定项

A(ob);
相当于

A ob;
在你的代码中

A(ob); 
同:

A ob; 
大括号是多余的。因此,以下内容与上述内容相同:

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

所有这些都是等价的。但这并不意味着你应该写这个。只要写些更容易阅读的东西。

@Kal elide没有副本。你会从什么地方复制?您刚刚默认构造了一个名为
ob
@juanchopanza ya的
A
,我不知道它与
A ob
相同,以为它是从
ob
复制到tempYes。我就是这么想的。如果之前定义了ob,并且您使用它初始化另一个对象,则(ob)的工作方式不同。
A((ob)); 
A(((ob))); 
A((((ob))));