6

可能的重复:
C++ 奇怪的构造函数语法构造函数中冒号后面的
变量
C++ 构造函数名称后面的冒号 ( : ) 有什么作用?

对于下面的 C++ 函数:

cross(vector<int> &L_, vector<bool> &backref_, vector< vector<int> > &res_) : 

    L(L_), c(L.size(), 0), res(res_), backref(backref_) {

    run(0); 

}

冒号(“:”)表示它的左右部分之间的关​​系是什么?并且可能,从这段代码可以说什么?

4

3 回答 3

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
       }
}
于 2010-08-17T15:38:25.437 回答
4

这是一个成员初始化列表。

您将每个成员变量设置为冒号后部分括号中的值。

于 2010-08-17T15:37:39.183 回答
3

像 C++ 中的许多东西一样,:它用于许多东西,但在您的情况下,它是初始化列表的开始。

其他用途例如在公共/私有/受保护之后,在案例标签之后,作为三元运算符的一部分,可能还有其他一些用途。

于 2010-08-17T15:38:44.390 回答