2014-07-21 72 views
0

我有下面的代碼是一個鍛鍊(約我問here)的一部分。瞭解MyClass x(y);其中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); 

我沒有,其輸入敏構造,唯一一個沒有參數,另一個是輸入一個int。 MyInt沒有operator()的定義。

什麼是計算機做那一行?

+1

這是調用該編譯器爲你做了'副本constructor'。 – CoryKramer

+0

哦!那是我不知道的語法。因此,取決於x和y的上下文和類型,x(y)可以表示:(1)具有參數y的x的構造函數,或者(2)具有參數y的x的運算符(),或者(3)複製構造函數將y的數據放入x中。這最後我不知道。 – Kae

+1

「的構造'x'與'y'的參數」(其中'x'和'y'是相同類型的)是,根據定義,一個拷貝構造。 –

回答

0

即對於用C++生成你MyInt x(y)執行copy constructor。如果你沒有定義一個拷貝構造函數,C++會爲你生成一個拷貝構造函數。檢查here中的複製構造函數部分。

相關問題