2012-09-17 84 views
0

其實我不知道如何定義這個成語。構造函數的快捷方式

在一些代碼,我有紅色的類似:

ClassWithAMessage c = "This is the message"; 

在那裏我應該閱讀:

ClassWithAMessage c("This is the message"); 

我不知道如何重現此問題,有人可以提供一些信息或一個玩具的例子?

+1

請參閱http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-direct-initializati – hmjd

回答

5
ClassWithAMessage c = "This is the message"; 

拷貝初始化。複製構造函數必須可用於此工作。首先,使用"This is the message"的轉換構造函數構造一個臨時ClassWithAMessage。然後臨時文件與複製構造函數一起使用來構造c。這是受複製elision(臨時可能不存在)。

ClassWithAMessage c("This is the message"); 

直接初始化。轉換構造函數是直接使用的。

不是真正的成語,只是不同的方式來構造一個對象。

+2

在C++ 11中,如果移動構造函數是可用它將被用來代替第一個語句的複製構造函數。 – xception

相關問題