c++ - 基于其他参数的默认值

标签 c++ c++11 constructor default-arguments delegating-constructor

我想实现这样的类:

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 委托(delegate)构造函数避免重复:

A(int ia, int ib)
  : A(ia, ib, ia + ib) {}

A(int ia, int ib, int ic)
  : a(ia), b(ib), c(ic) {}

关于c++ - 基于其他参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19043510/

相关文章:

c++ - 指向虚类的指针

c++ - C++ 中的包含和转发声明

c++ - 了解 C++ 转换运算符的选择

c++ - std::array 构造函数继承

C++ 错误 : "Multiple markers at this time: no matching function for call to" in constructor

c++ - tchar 安全函数——UTF-8 常量的计数参数

c++ - 在 C++ 中使用 BitmapData 的 AccessVioilationException

c++ - 以可维护的方式管理应用程序配置的模式

kotlin - Kotlin 中的构造函数与参数

javascript - 函数也是对象?