C++ 中 public 继承,private继承,protected继承之间的区别是什么
时间: 2023-04-01 22:02:20 浏览: 461
public 继承表示派生类可以访问基类的公有成员,但不能访问基类的私有成员;private 继承表示派生类不能访问基类的公有成员和保护成员,只能访问基类的私有成员;protected 继承表示派生类可以访问基类的公有成员和保护成员,但不能访问基类的私有成员。
相关问题
c++类中public和private,protected有什么区别
在C++中,public、private和protected是类成员访问修饰符,它们的作用是控制类成员的访问权限。
public成员可以被类的任何成员函数、友元函数、派生类和外部代码访问,而private成员只能被类的成员函数和友元函数访问,无法被派生类和外部代码访问。protected成员和private成员类似,但可以被派生类访问。
因此,public成员表示对外可见,可以被外部调用;private成员表示对外不可见,只能被类内部的函数访问;protected成员表示对外不可见,但可以被派生类访问。
举个例子,假设我们有一个名为Person的类,该类有两个private成员变量name和age,以及一个public成员函数printInfo,代码如下:
```
class Person {
private:
string name;
int age;
public:
void printInfo() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
```
在这个例子中,name和age是private成员变量,只能在类内部访问。而printInfo是public成员函数,可以被外部代码调用来输出name和age的值。
总之,public、private和protected关键字在C++中用于控制类成员的访问权限,可以保证程序的安全性和封装性。
为什么使用public/protected继承而不是private继承
在C++中,继承分为public、protected和private三种方式。使用public继承意味着派生类对象可以被当作基类对象使用,而使用protected和private继承意味着派生类对象只能在派生类内部使用。
通常情况下,使用public和protected继承比private继承更为常见。下面是一些使用public/protected继承而不是private继承的原因:
1. 实现"是一个"关系:public和protected继承表示派生类是一个基类的特殊类型,具有相同的接口和行为,而private继承只是为了实现代码重用。
2. 代码重用:public和protected继承可以让派生类继承基类的成员变量和函数,使得派生类可以重用基类的代码。而private继承只是为了实现代码重用,派生类无法访问基类的成员变量和函数,只能通过基类的接口来访问。
3. 可扩展性:public和protected继承可以使得派生类扩展基类的功能,增加新的成员变量和函数,而private继承只是为了实现代码重用,不能对基类进行扩展。
综上所述,使用public和protected继承比private继承更加常见,因为public和protected继承可以实现"是一个"关系,支持代码重用和可扩展性。但是在某些特殊情况下,private继承也是有用的,例如实现某些设计模式时。
阅读全文