小编use*_*797的帖子

没有默认构造函数的类成员

假设我有一个没有默认构造函数的类A,一个返回类型A的对象的工厂方法factoryA,以及一个以A作为其成员的类B. 我知道在这种情况下,B类型A的成员必须在B的构造函数初始化列表中初始化.我并不完全清楚为什么如果有人可以向我解释这将是伟大的.另外,如果A的构造函数的参数需要在B的构造函数内部计算,比如通过查询数据库或那种性质的东西,该怎么办?有没有办法使用下面的设置,而不提供A与默认构造函数?提前致谢.

class A {
private:
  int _i;
public:
  A(int i) : _i(i) {} 
};

A factoryA(bool b) {
  if(b)
    return A(1);
  else return A(2);
}

class B {
private:
  A _a;
public:
  B(int j) {
    if(j > 0)
      _a = factoryA(true);
    else _a = factoryA(false);
  }
};
Run Code Online (Sandbox Code Playgroud)

c++ default-constructor initialization-list

6
推荐指数
3
解决办法
9353
查看次数