C++派生类中的成员函数能调用基类中的数据成员i、j、k吗(i公有,j受保护,k私有)
时间: 2024-02-15 19:02:40 浏览: 69
C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar
4星 · 用户满意度95%
派生类中可以访问基类的公有成员变量,但不能直接访问基类的私有成员变量。对于受保护的成员变量,派生类可以访问它们,但只能通过基类的公有成员函数来访问。
因此,在派生类中,可以直接访问基类的公有成员变量 `i`,例如:
```cpp
class BaseClass {
public:
int i;
protected:
int j;
private:
int k;
};
class DerivedClass : public BaseClass {
public:
void derivedFunc() {
i = 1; // 可以直接访问基类的公有成员变量 i
// j = 2; // 不能直接访问基类的受保护成员变量 j
// k = 3; // 不能直接访问基类的私有成员变量 k
}
};
```
如果需要访问基类的受保护成员变量 `j`,可以在基类中定义公有成员函数来访问它,然后在派生类中调用该函数,例如:
```cpp
class BaseClass {
public:
int i;
int getJ() {
return j;
}
protected:
int j;
private:
int k;
};
class DerivedClass : public BaseClass {
public:
void derivedFunc() {
i = 1; // 可以直接访问基类的公有成员变量 i
int jValue = getJ(); // 调用基类的公有成员函数来访问受保护成员变量 j
// k = 3; // 不能直接访问基类的私有成员变量 k
}
};
```
阅读全文