小编fac*_*iel的帖子

在构造函数中初始化 const 字段

C++ 中的 const 字段必须在初始化列表中初始化,这使得从构造函数参数计算相互依赖的值变得非常重要。

例如,将这段 java 代码翻译成 c++ 的最佳方法是什么?

public class SomeObject {
  private final String some_string;
  private final int some_int;

  public SomeObject(final String input_filename){
    SomeReader reader(input_filename);

    some_string = reader.getString();
    some_int = reader.getInt();

    reader.close();
  }
}
Run Code Online (Sandbox Code Playgroud)

我想过在SomeObject中封装一个子对象,但这只是转移问题;或使用静态方法构造对象:

class SomeObject {
  private:
    const std::string some_string;
    const int some_int;

  public:
    static SomeObject unserialize(const char * input_filename){
      SomeReader reader = new SomeReader(input_filename);

      string str = reader.get_string();
      int i = reader.get_int();

      reader.close();

      SomeObject obj(str, i);
      return obj;
    };

    SomeObject(const std::string str, const int i) …
Run Code Online (Sandbox Code Playgroud)

c++ constructor constants ctor-initializer

4
推荐指数
1
解决办法
595
查看次数

标签 统计

c++ ×1

constants ×1

constructor ×1

ctor-initializer ×1