初始化 A(ob) 如何工作,其中 ob 是类 A 的对象

how does the initialization A(ob) work, where ob is an object of class A

本文关键字:ob 其中 是类 对象 何工作 初始化 工作      更新时间:2023-10-16

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的初始值设定项。

A(ob); 

与:

A ob; 

牙套是多余的。所以以下内容与上面相同:

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

所有这些都是等效的。 但这并不意味着你应该写这个。只需写下更容易阅读的内容。

看起来

很奇怪

A(ob);

相当于

A ob;

在您的代码中。

相关文章: