参数的默认值基于其他参数

argument's default value base on others

本文关键字:参数 其他 于其他 默认值      更新时间:2023-10-16

我想实现这样的类:

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
};

我希望 ic 的默认值是根据 ia 和 ib 计算的,这里的代码在编译时会出错。

我想知道是否有办法得到这样的东西。

谢谢。

只需添加另一个构造函数重载:

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) {}

如果您需要有关设置默认构造函数的进一步帮助,请阅读此链接。