构造函数是一种特殊的函数,与包含他的类重名。构造函数没有返回值,因此没有返回类型。为构造函数指定返回类型是错误的。
默认构造函数的参数值,有默认参数的构造函数参数声明时是可以省略的【所以此处不能有没有参数的构造函数】
class Box { private : double length; double width; double heigth; public : Box(double lengthValue = 1.0, double widthValue = 1.0, double heigthValue = 1.0) { length = lengthValue; width = widthValue; heigth = heigthValue; } double volume() { return length*width*heigth; } }; int main() {
#if 0 Box mybox(); //error,先记住
#else
// Box mybox; correct
Box mybox{}; //correct
#endif
std::cout << mybox.volume() << std::endl; return 0; }
构造函数中使用初始化列表
Box::Box(double lv, double wv, double hv) : length{lv}, width{wv}, heigth{hv} { ; }
委托构造函数
class Box { private : double length = 1.0; double width = 1.0; double heigth = 1.0; public : Box(double lengthValue, double widthValue, double heigthValue); Box(double side); Box() {}; double volume(); }; Box::Box(double lengthValue, double widthValue, double heigthValue) { /*跟在类内部定义构造函数时一致*/ length = lengthValue; width = widthValue; heigth = heigthValue; } Box::Box(double side):Box(side, side, side) { ; } double Box::volume() { return length*width*heigth; } int main() { Box mybox(2); std::cout << mybox.volume() << std::endl; return 0; }