小编Sal*_*tus的帖子

如何在构造时在 C++ 类中设置 const 成员变量?

那么这个问题可能与这些问题有相当多的重叠:

如何在类中初始化const成员变量
C++11中
的const成员变量在对象构造后初始化const成员变量

然而,这些都不能回答我最初的问题。主要区别在于我不想使用设置值而是使用构造函数参数进行初始化。

我想做的是这样的——

class myRectangle {
private:
   const int length;  //const mainly for "read-only" like
   const int breadth;  //protection
public:
   myRectangle(int init_length, int init_breadth);
   int calcArea(void);
   void turn90Degrees(void);
  /* and so on*/
Run Code Online (Sandbox Code Playgroud)

}

其中长度和宽度都是只读的,在构造后不会改变它们。
但当然,我的编译器不会允许我将它们设置在构造函数中,因为它们实际上是const的......
我没有拿出解决办法只是让他们变和只实现getter方法,使他们不能有效地改变,但我几乎感觉我在这里错过了明显的解决方案。

另外我觉得我在某种程度上误解了 const 的使用。那么,从那时起不更改数据是否“已经”成为编译时合同?因为在我的理解中,不知道常量在程序执行过程中占用的大小是否足够信息?

顺便说一句,使恒定静态的解决方案不适合我,因为我生成的每个矩形都应该有不同的大小。

感谢您的回答和澄清!

解决方案:初始化列表/委托构造函数

来自 Jason R 的解决方案的 MSDN 条目

c++ constructor class constants member

-1
推荐指数
1
解决办法
5164
查看次数

标签 统计

c++ ×1

class ×1

constants ×1

constructor ×1

member ×1