xTh*_*Ec0 3 c++ inheritance c++11
我正在学习OOP,似乎遇到了问题。
代码:
class line {
protected:
double a;
public:
line() {a = 1;}
line(double var1) {a = var1;}
};
class rectangle: private line {
protected:
double b;
public:
double area() {return a * b;}
rectangle():line() {b = 1;}
rectangle(double var1):line(var1) {b = var1;}
rectangle(double var1, double var2):line(var1) {b = var2;}
};
class parallelepiped: private rectangle{
private:
double c;
public:
double volume() {return area() * c;}
void print() { cout << "Parallelepiped rectangle information:" << endl;
cout << "a = " << a << ", b = " << b << ", c = " << c << endl;
cout << "Volume: " << volume() << endl << endl;}
parallelepiped():rectangle() {c = 1;}
parallelepiped(double var1):rectangle(var1) {c = var1;}
parallelepiped(double var1, double var2):rectangle(var1) {c = var2;}
parallelepiped(double var1, double var2, double var3):rectangle(var1, var2) {c = var3;}
};
Run Code Online (Sandbox Code Playgroud)
问题:错误:'double line::a' 在 print() 中受到保护。
有什么方法可以打印出“a”,以及对学习者的一般提示吗?
在 C++ 中学习 OOP 时,您不需要使用私有继承。在某些情况下,私有或受保护的继承是很好的设计决策,但在刚开始时却并非如此。
如果你想访问超类的成员,你应该使用公共继承
class rectangle: public line {};
class parallelepiped: public rectangle {};
Run Code Online (Sandbox Code Playgroud)
这是关于私有公共继承和受保护继承之间差异的解释:
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |