2012-03-30 144 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