class Parent { int x; public: int a; int b; }; class Son: public Parent { public: int f () const { int c = a+b; return x; } };
时间: 2024-03-27 15:41:33 浏览: 71
这段代码存在一个问题:
在类Son中,成员函数f()试图访问基类Parent中的私有成员变量x,但是在派生类中是无法直接访问基类的私有成员的。
要修正这个问题,可以将基类Parent中的x成员变量改为protected访问权限,或者在基类中提供一个公有成员函数来获取x的值。例如:
```c++
class Parent {
protected:
int x;
public:
int a;
int b;
int getX() const { return x; }
};
class Son : public Parent {
public:
int f() const {
int c = a + b;
return x; // 可以通过protected访问权限或者公有成员函数getX()来访问基类中的x成员变量
}
};
```
这样,在派生类Son中就可以通过protected访问权限或者getX()公有成员函数来获取基类Parent中的x成员变量的值,而不需要直接访问基类中的私有成员变量。
阅读全文