公有继承、私有继承作用和区别。
时间: 2023-04-12 21:02:05 浏览: 124
公有继承和私有继承都是面向对象编程中的继承方式。公有继承是指派生类可以访问基类中的公有成员和保护成员,但不能访问基类中的私有成员。私有继承是指派生类可以访问基类中的公有成员、保护成员和私有成员,但不能通过派生类对象访问基类中的任何成员。
公有继承的作用是可以让派生类获得基类的接口和实现,从而可以重用基类的代码。私有继承的作用是可以让派生类获得基类的实现,但不会继承基类的接口,从而可以隐藏基类的实现细节,同时可以通过派生类的接口来访问基类的实现。
总之,公有继承和私有继承都有各自的应用场景,具体使用哪种方式取决于具体的需求。
相关问题
C++私有继承和公有继承的区别
私有继承和公有继承是C++中两种不同的继承方式。
私有继承表示派生类继承了基类的成员,但是这些成员对于派生类来说是私有的。也就是说,派生类可以使用基类的成员函数和成员变量,但是外部无法访问这些成员。私有继承通常用于实现"has-a"关系,即派生类包含了基类的功能,但不希望外部直接访问基类的成员。
公有继承表示派生类继承了基类的成员,并且这些成员对于外部来说也是可访问的。也就是说,派生类可以使用基类的公有成员函数和成员变量,并且外部也可以通过派生类的对象访问这些成员。公有继承通常用于实现"is-a"关系,即派生类是基类的一种特殊类型。
总结起来,私有继承将基类的成员对派生类隐藏起来,而公有继承将基类的成员对外部可见。
保护继承和公有继承的区别
保护继承和公有继承的区别在于派生类对于基类的保护成员的访问权限不同。具体来说,保护继承会将基类的保护成员作为派生类的保护成员,而公有继承会将基类的保护成员作为派生类的公有成员。
下面是一个示例代码,演示了保护继承和公有继承的区别:
```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;
}
```