Понимание MyClass x(y); где у типа MyClass

У меня есть следующий код, который является частью упражнения (о котором я спрашивал здесь).

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 не имеет определения оператора ().

Что делает компьютер в этой линии?

1 ответ

Это copy constructor выполнено для MyInt x(y) сгенерированный C++ для вас. Если вы не определили конструктор копирования, C++ создаст его для вас. Проверьте раздел конструктора копирования здесь.

Другие вопросы по тегам