可能重复:
C++ weird constructor syntax
Variables After the Colon in a Constructor
What does a colon ( : ) following a C++ constructor name do?
对于下面的C ++函数:
cross(vector<int> &L_, vector<bool> &backref_, vector< vector<int> > &res_) :
L(L_), c(L.size(), 0), res(res_), backref(backref_) {
run(0);
}
冒号(“:”)告诉左右两部分之间的关系是什么?也许,从这段代码可以说什么?
答案 0 :(得分:5)
这是一种在实际调用类的c'tor之前初始化类成员字段的方法。
假设你有:
class A {
private:
B b;
public:
A() {
//Using b here means that B has to have default c'tor
//and default c'tor of B being called
}
}
现在写作:
class A {
private:
B b;
public:
A( B _b): b(_b) {
// Now copy c'tor of B is called, hence you initialize you
// private field by copy of parameter _b
}
}
答案 1 :(得分:4)
这是一个成员初始化列表。
您将每个成员变量设置为冒号后部分括号中的值。
答案 2 :(得分:3)
与C ++中的许多内容一样,:
用于许多事情,但在您的情况下,它是初始化列表的开头。
其他用途例如在公共/私人/受保护之后,在案例标签之后,作为三元运营商的一部分,可能还有其他一些用途。