在保护继承方式下,基类中保护成员在派生类中转为公有成员。
时间: 2023-06-25 21:02:13 浏览: 71
在保护继承方式下,基类中的保护成员在派生类中变为派生类的保护成员,而不是公有成员。这意味着,派生类可以访问基类的保护成员,但是该成员对于外部世界仍然是不可见的。只有在派生类内部和其子类中才可以访问该成员。同时,在派生类对象中,基类的保护成员也会被包含在其中,但是无法通过对象名直接访问。需要使用派生类的成员函数来访问基类的保护成员。
相关问题
基类中的保护成员通过基类继承为什么可以在派生类外访问
基类中的保护成员可以在派生类中访问,但在派生类外部不能直接访问。这是因为在C++中,基类和派生类之间的继承关系被认为是一种特殊的关系,派生类可以继承并访问基类的成员,包括公共、保护和私有成员。在继承中,派生类对象包含基类对象的子对象,因此派生类对象可以访问基类对象的成员。
在派生类中,可以通过以下方式来访问基类中的保护成员:
1. 使用基类名限定符:可以使用基类名加作用域解析运算符(::)来访问基类中的保护成员。
2. 在派生类中定义公共成员函数:可以在派生类中定义公共成员函数,通过该函数来访问基类中的保护成员。
需要注意的是,派生类中的成员函数只能访问基类中的保护成员,而不能直接访问基类中的私有成员。
用c++验证公用继承下基类的公用成员在派生类依然为公用成员
可以通过以下代码来验证公用继承下基类的公用成员在派生类中依然为公用成员:
```c++
#include <iostream>
using namespace std;
class Base {
public:
int publicMember;
};
class Derived : public Base {
public:
void accessPublicMember() {
cout << "Derived class can access public member of Base class: " << publicMember << endl;
}
};
int main() {
Derived d;
d.publicMember = 10;
d.accessPublicMember();
return 0;
}
```
在上面的代码中,我们定义了一个基类 `Base`,其中有一个公用成员 `publicMember`。然后我们定义了一个派生类 `Derived`,并通过公用继承的方式继承了基类 `Base`。在派生类 `Derived` 中,我们定义了一个成员函数 `accessPublicMember()`,该函数可以访问基类 `Base` 的公用成员 `publicMember`。在 `main()` 函数中,我们创建了一个 `Derived` 类的对象 `d`,并通过该对象访问了基类 `Base` 的公用成员 `publicMember`。
运行上述代码,可以看到程序输出了以下结果:
```
Derived class can access public member of Base class: 10
```
这表明在公用继承下,基类的公用成员在派生类中依然为公用成员,可以被派生类访问和使用。