那么这个问题可能与这些问题有相当多的重叠:
如何在类中初始化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 的使用。那么,从那时起不更改数据是否“已经”成为编译时合同?因为在我的理解中,不知道常量在程序执行过程中占用的大小是否足够信息?
顺便说一句,使恒定静态的解决方案不适合我,因为我生成的每个矩形都应该有不同的大小。
感谢您的回答和澄清!
解决方案:初始化列表/委托构造函数