2013-08-21 29 views
0

因此,這裏的代碼段:C++傳遞對象的功能,操作者=不叫

MyClass類{公共:MyClass的(CHAR下巴){的std :: COUT < < 「構造!」 < < std :: endl; }

MyClass & operator =(char chIn){std :: cout < <「Assigment operator!」 < < std :: endl; }};

void Func(MyClass objIn){return; }

int _tmain(int argc,_TCHAR * argv []){Func('T');系統( 「暫停」); return 0; }

在上面的例子中,對象的構造函數被調用!!!!這是爲什麼?不應該調用分配操作符嗎?因爲我們正在爲函數參數賦值,是不是?

回答

1

操作員調用=對於已經存在的對象否則構造(或複製的構造函數)被用於創建所需的實例

+0

但不是功能參數已經存在的對象。我的意思是不是它創建之前的價值被分配給它? –

+0

@ sasho648不,它不是。它在調用函數後創建。 – Pixelchemist

+0

使用必須分配給它的值(傳遞給它)?但這是不明智的。在這種情況下,我們不能將多個參數傳遞給它的構造函數,如果我們不創建我們的對象,並且在它之後立即傳遞它。 assigment操作符總是有一個參數,所以在構造對象之後調用它會更合理。 –