理解MyClass x(y);其中y是MyClass类型

时间:2014-07-21 22:10:40

标签: c++ constructor function-object

我有以下代码是练习的一部分(我问过here)。

class MyInt
{
public:
   MyInt(int x) : MyValue(new int(x)){};

   MyInt()
   {
     MyValue = 0;
   }
private:
  int* MyValue;
}

int main(int argc,char** argv)
{ 
   MyInt y(1);
   MyInt x(y);
   .... //Mode code
}

代码编译并运行(如果我不忘记在此处放置相关部分)。我想了解这一行

MyInt x(y);

我没有输入MyInt的构造函数,只有一个没有参数,另一个没有输入int。 MyInt没有operator()的定义。

计算机在那条线上做什么?

1 个答案:

答案 0 :(得分:0)

这是由C ++为您生成的copy constructor执行的MyInt x(y)。如果您没有定义复制构造函数,C ++会为您生成一个。检查here中的复制构造函数部分。