我想实现这样的课程:
class A{
int a;
int b;
int c;
A():a(),b(),c(){};
A(int ia,int ib,int ic=ia+ib):a(ia),b(ib),c(ic){}; //this is what i need
};
我想根据ia和ib计算ic的默认值,这里的代码在编译时会出错。
我想知道是否有办法得到这样的东西。
谢谢。
我想实现这样的课程:
class A{
int a;
int b;
int c;
A():a(),b(),c(){};
A(int ia,int ib,int ic=ia+ib):a(ia),b(ib),c(ic){}; //this is what i need
};
我想根据ia和ib计算ic的默认值,这里的代码在编译时会出错。
我想知道是否有办法得到这样的东西。
谢谢。
只需添加另一个构造函数重载:
A(int ia, int ib)
: a(ia), b(ib), c(ia + ib) {}
A(int ia, int ib, int ic)
: a(ia), b(ib), c(ic) {}
对于更复杂的初始化,您可以使用 C++11 委托构造函数来避免重复:
A(int ia, int ib)
: A(ia, ib, ia + ib) {}
A(int ia, int ib, int ic)
: a(ia), b(ib), c(ic) {}
您可以简单地构建具有所需值的默认构造函数,或者通过添加另一个构造函数简单地重载。这些值将在您执行后分配。类似于..
A (int ia, int ib, int ic): a(ia), b(ib), c(ic) {}
如果您在设置默认构造函数方面需要进一步帮助,请阅读此链接。