我是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)意味着什么?演员?
答案 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
答案 5 :(得分:0)
A(int xx) : x(xx)
使用x
的值初始化数据成员xx
。
答案 6 :(得分:0)
代码有效:成员变量“x
”正在“基础/成员初始化列表”中设置一个值。
初始化引用成员,常量成员的值或将参数转发给基础构造函数时,需要此类型的初始化。
在其他情况下,这是可选的,其中值可以在构造函数体中显式设置(但这可以说更快,因为它在分配内存时被初始化)。