保护继承和公有继承的区别
时间: 2023-12-14 19:04:34 浏览: 84
C/C++ 公有继承、保护继承和私有继承的对比详解
5星 · 资源好评率100%
保护继承和公有继承的区别在于派生类对于基类的保护成员的访问权限不同。具体来说,保护继承会将基类的保护成员作为派生类的保护成员,而公有继承会将基类的保护成员作为派生类的公有成员。
下面是一个示例代码,演示了保护继承和公有继承的区别:
```c++
#include <iostream>
using namespace std;
class Base {
public:
int public_var;
protected:
int protected_var;
private:
int private_var;
};
// 公有继承
class Derived1 : public Base {
public:
void access_base_members() {
cout << public_var << endl; // 可以访问基类的公有成员
cout << protected_var << endl; // 可以访问基类的保护成员
//cout << private_var << endl; // 不能访问基类的私有成员
}
};
// 保护继承
class Derived2 : protected Base {
public:
void access_base_members() {
cout << public_var << endl; // 可以访问基类的公有成员
cout << protected_var << endl; // 可以访问基类的保护成员
//cout << private_var << endl; // 不能访问基类的私有成员
}
};
int main() {
Derived1 d1;
d1.public_var = 1; // 可以访问基类的公有成员
//d1.protected_var = 2; // 不能访问基类的保护成员
//d1.private_var = 3; // 不能访问基类的私有成员
d1.access_base_members(); // 可以访问基类的公有成员和保护成员
Derived2 d2;
//d2.public_var = 1; // 不能访问基类的公有成员
//d2.protected_var = 2; // 不能访问基类的保护成员
//d2.private_var = 3; // 不能访问基类的私有成员
d2.access_base_members(); // 可以访问基类的公有成员和保护成员
return 0;
}
```
阅读全文