构造函数体中的 C++ 类 const 成员初始化

时间:2021-06-20 16:36:09

标签: c++ class constructor constants member

我在初始化 const 类成员时遇到问题。 我在const成员初始化之前要做很多计算,所以不能用这个语法

Class::Class(int value) : value(value) {}

我想在构造函数体中初始化成员,例如:

Class::Class(int value) {
  if (Function1(value)) {
    this->value = value;
    Function2(&this->value);
  }
  else
    this->value = value * 2;
}

有可能吗? 希望得到您的帮助!

2 个答案:

答案 0 :(得分:2)

将所有计算收集到一个静态计算函数中。

struct Class {
    static int calcValue(int value) {
        if (Function1(value) {
            Function2(&value);
            return value;
        }
        return value * 2;
    }

    Class(int val)
        : value(calcValue(val))
    {}
};

答案 1 :(得分:0)

您可以在成员初始化器列表中使用三元语句:

Class::Class(int value) : 
  value( Function1(value) ? value : value * 2) 
{ 
  if (Function1(value))
  {
    Function2(&this->value); 
  }
};