保护继承中通过子类访问父类
时间: 2024-05-01 15:22:52 浏览: 93
在C++中,可以使用保护继承来实现通过子类访问父类的成员。当使用保护继承时,父类中的公共成员和保护成员都会成为子类的保护成员,因此子类可以访问这些成员。但是,外部函数和对象不能直接访问子类的保护成员,只有子类的成员函数和友元函数可以访问这些成员。
以下是一个示例代码,演示了如何使用保护继承来访问父类的成员:
```c++
class Parent {
protected:
int x;
public:
void setX(int value) {
x = value;
}
};
class Child : protected Parent {
public:
void setXAndDouble(int value) {
setX(value);
x *= 2;
}
};
int main() {
Child c;
c.setXAndDouble(5);
// 下面这行代码会报错,因为x是Child类的保护成员
// std::cout << c.x << std::endl;
return 0;
}
```
在上面的示例中,子类`Child`通过保护继承继承了父类`Parent`的成员变量`x`和成员函数`setX()`。在`Child`类中定义了一个新的成员函数`setXAndDouble()`,该函数调用了父类的`setX()`函数来设置`x`的值,然后将`x`乘以2。在`main()`函数中,我们创建了一个`Child`对象`c`,并调用了`setXAndDouble()`函数,最终`x`的值为10。注意,在`main()`函数中我们不能直接访问`x`成员,因为它是`Child`类的保护成员。
阅读全文