2012-03-30 127 views
0

可能重複:
Class construction with initial valuesC++初始化

雖然我一直在尋找的C++例子http://en.wikipedia.org/wiki/Delegation_pattern我發現了一些我沒有見過:

C() : i(new A()) { } 

我問題是:這行代碼如何與以下任何不同:

C() { 
    i = new A(); 
} 

構造函數之後的:做什麼? new A()附近的括號是做什麼的?

+0

[類結構具有初始值]的可能重複(http://stackoverflow.com/questions/7207884/class-construction-with-initial-values)以及:http://stackoverflow.com/問題/ 4589237/c-initialization-lists – 2012-03-30 18:11:55

+0

我不知道它叫什麼,所以我不知道要搜索什麼,抱歉重複,我會閱讀您鏈接的主題。謝謝。 – karthaxx 2012-03-30 18:13:58

回答

4

它被稱爲initialization list。它用於初始化類的數據成員。

C() { 
    i = new A(); // i is not initialized here, here assignment is taking place. 
} 
+0

也有許多理由以與聲明相同的順序進行操作。 – 2012-03-30 18:12:34

+1

此外,在C++ 11之前,const成員只能使用成員初始化程序語法進行初始化。 – chris 2012-03-30 18:13:14

+0

@EdHeal因爲類變量的初始化順序只是聲明它們的順序。 – xis 2012-03-30 18:16:01