可以通过子类的对象直接访问父类中的保护类吗
时间: 2023-11-25 20:04:54 浏览: 63
子类中重载父类的方法-面向对象课件
可以通过子类的对象直接访问父类中的保护成员,但是需要满足以下两个条件:
1. 该保护成员在父类中是可访问的,即它要么是公有成员或保护成员。
2. 子类对象必须是通过派生类中的公有成员函数或友元函数来访问父类成员的。
下面是一个示例:
```
class Animal {
protected:
int age;
};
class Dog : public Animal {
public:
void setAge(int a) {
age = a; // 可以访问父类的受保护成员变量
}
void printAge() {
cout << age << endl; // 可以直接访问父类的受保护成员
}
};
int main() {
Dog dog;
dog.setAge(3);
dog.printAge();
return 0;
}
```
在这个示例中,`Dog`类继承了`Animal`类的保护成员`age`,并通过`setAge()`函数来设置`age`的值。在`printAge()`函数中,直接访问了父类的保护成员`age`。但是需要注意的是,如果在`main()`函数中直接访问`dog.age`是不合法的,因为`age`是一个受保护的成员。
阅读全文