让我来为大家讲解一下C++中的三种继承——public、protected和private。
什么是继承
在C++中,继承是一种从已存在的类中派生出新的类的机制。通过继承,新的类可以获得已存在的类的所有属性和行为。
三种继承方式
public继承
public继承是基类(被继承类)中的public和protected成员在派生类(继承类)中仍旧保持public和protected属性,而基类中的private成员不可见。下面是一个示例:
#include <iostream>
using namespace std;
// 基类
class Base{
public:
int public_var = 0;
private:
int private_var = 0;
protected:
int protected_var = 0;
};
// 派生类
class Derived : public Base{
public:
void access_base_member(){
cout << public_var << endl; // 可以访问public属性
// cout << private_var << endl; // 错误:不能访问private属性
cout << protected_var << endl; // 可以访问protected属性
}
};
int main(){
Derived derived;
derived.access_base_member();
return 0;
}
输出结果:
0
0
protected继承
protected继承是基类中所有成员都被继承到派生类中,且所有成员在派生类中变成protected属性。在派生类及其实例中,protected成员可以被访问,基类对象和非派生类(即没有被继承的类)不可以访问。下面是一个示例:
#include <iostream>
using namespace std;
// 基类
class Base{
public:
int public_var = 0;
private:
int private_var = 0;
protected:
int protected_var = 0;
};
// 派生类
class Derived : protected Base{
public:
void access_base_member(){
cout << public_var << endl; // 可以访问protected属性
// cout << private_var << endl; // 错误:不能访问private属性
cout << protected_var << endl; // 可以访问protected属性
}
};
int main(){
Derived derived;
derived.access_base_member();
return 0;
}
输出结果:
0
0
private继承
private继承是基类中所有成员都被继承到派生类中,且所有成员在派生类中变成private属性。在派生类及其实例中,private成员可以被访问,基类对象和非派生类不可以访问。下面是一个示例:
#include <iostream>
using namespace std;
// 基类
class Base{
public:
int public_var = 0;
private:
int private_var = 0;
protected:
int protected_var = 0;
};
// 派生类
class Derived : private Base{
public:
void access_base_member(){
cout << public_var << endl; // 可以访问private属性
// cout << private_var << endl; // 错误:不能访问private属性
cout << protected_var << endl; // 可以访问private属性
}
};
int main(){
Derived derived;
derived.access_base_member();
return 0;
}
输出结果:
0
0
总结
通过上述示例,我们了解了C++中的三种继承方式:public、protected和private,它们的区别在于派生类中基类成员属性的变化以及对基类成员的访问权限不同。需要注意的是,对于访问级别,不仅影响派生类的成员函数,也影响到通过派生类对象访问的基类成员函数。
以上是关于C++中三种继承方式的详细解析,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的三种继承public,protected,private详细解析 - Python技术站