关于c ++中构造函数的问题

时间:2011-05-06 18:49:26

标签: c++ constructor

我是c ++的新手,我还没有看到这种构造函数,它做了什么?

class A {
    int x;
public:
    A(int xx):x(xx) {}
};

int main() {
    A a(10);
    A b(5);
    return 0;
}

以上代码有效吗?
这个构造函数做了什么? A(int xx):x(xx)意味着什么?演员?

7 个答案:

答案 0 :(得分:4)

  

上面的代码有效吗?

  

这个构造函数做什么? A(int xx):x(xx)意味着什么?

它被称为初始化列表,它将xx复制到班级成员x

答案 1 :(得分:2)

:之后和正文(空括号)之后的内容是初始化列表。它使用x初始化成员变量xx

请参阅C ++ FAQ中的本节:http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6

答案 2 :(得分:1)

字符串:x(xx)称为初始化程序。正如您所看到的,它仅对构造函数有效。效果是使用值xx初始化x。所以你的代码会生成两个A对象 - 一个的x为10,另一个为5。

这比让它初始化然后通过编写x=xx;

更改构造函数体中的值更有效

答案 3 :(得分:0)

这称为初始化列表。当调用构造函数时,私有变量x将用xx初始化。

答案 4 :(得分:0)

这是一个带有初始化程序的构造函数。

x(xx)使用值xx

初始化x

答案 5 :(得分:0)

A(int xx) : x(xx)使用x的值初始化数据成员xx

答案 6 :(得分:0)

代码有效:成员变量“x”正在“基础/成员初始化列表”中设置一个值。

初始化引用成员,常量成员的值或将参数转发给基础构造函数时,需要此类型的初始化。

在其他情况下,这是可选的,其中值可以在构造函数体中显式设置(但这可以说更快,因为它在分配内存时被初始化)。