const数据成员,只能用初始化列表进行初始化,看你注释的那行,rectangle():length(3) //这个就是初始化列表。 以后记得这样初始化就ok了, 没事来 0x30 百度贴吧 耍耍,分享交流C/C++ 。
"'length' : must be initialized in constructor base/member initializer list"
编译器都告诉你了,对于const的成员变量,应该在构造函数的初始化列表中对其初始化。你还想怎样?
常成员一般只能在初始化列表中初始化,其他地方都是赋值了,改变了const的性质
除非是静态的常量成员,才可以直接在声明的后面直接用等号初始化
C++ 中const 变量只能用 冒号语法(成员初始化列表)来进行的
const变量除初始化(不等同于第一次赋值)外不允许再改变其值
冒号语法(成员初始化列表) 使得const变量及基类带参构造 初始化成为可能
C++ 中const 变量只能用 成员初始化列表来初始化const变量
不能在其他地方再改变它的值