你好,我对C++相当陌生,我希望使用初始化列表从Square构造函数中调用Rectangle构造函数,以便为正方形的sideA和sideB分配值。如有任何建议,将不胜感激。
class Rectangle
{
public:
Rectangle (int a, int b);
// ...
public:
int sideA;
int sideB;
};
Rectangle::Rectangle (int a, int b) {
sideA = a;
sideB = b;
if (a < 1)
sideA = 1;
if (b < 1)
sideB = 1;
}
class Square: public Rectangle
{
public:
Square(int); //constructor
void setSideA(int);
void setSideB(int);
};
Square::Square (int a) {
sideA = a;
sideB = a;
}
void Square::setSideA(int a) {
sideA = a;
sideB = a;
if (a < 1)
sideA = 1;
sideB = 1;
}
void Square::setSideB(int b) {
sideA = b;
sideB = b;
if (b < 1)
sideA = 1;
sideB = 1;
}发布于 2022-06-21 21:15:46
可以在派生类(Square)构造函数的初始化器列表部分调用基类(Square)构造函数,从而以与初始化数据成员相同的方式初始化派生类的“基本组件”(如下面代码中Rectangle构造函数的初始化程序列表所示):
class Rectangle {
private:
int sideA, sideB;
public:
Rectangle(int a, int b) : sideA{ std::max(1,a) }, sideB{ std::max(1,b) } {} // Initialize data
//...
};
class Square : public Rectangle {
public:
Square(int s) : Rectangle{ s, s } {} // 'Initializer list' calls base class c'tor
//...
};https://stackoverflow.com/questions/72707116
复制相似问题