一、public继承
标红:表示不可访问
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
class Base {
public:
int PublicBase;
void PublicPrint() { std::cout << "PublicPrint()" << std::endl; }
protected:
int ProtectedBase;
void ProtectedPrint() { std::cout << "ProtectedPrint()" << std::endl; }
private:
int PrivateBase;
void PrivatePrint() { std::cout << "PrivatePrint()" << std::endl; }
};
class Derivedpublic : public Base {
public:
void DerivedPrint() {
cout << "DerivedPrint()" << endl;
cout << PublicBase << endl;
cout << ProtectedBase <<endl;
cout << PrivateBase << endl;//标红
PublicPrint();
ProtectedPrint();
PrivatePrint();//标红
}
};
int main()
{
//-----------------------public继承
Derivedpublic der;
cout << der.PublicBase << endl;
cout << der.ProtectedBase << endl;//标红
cout << der.PrivateBase << endl;//标红
der.PublicPrint();
der.ProtectedPrint();//标红
der.PrivatePrint();//标红
system("pause");
return 0;
}
编译报错信息:
二、protected继承
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
class Base {
public:
int PublicBase;
void PublicPrint() { std::cout << "PublicPrint()" << std::endl; }
protected:
int ProtectedBase;
void ProtectedPrint() { std::cout << "ProtectedPrint()" << std::endl; }
private:
int PrivateBase;
void PrivatePrint() { std::cout << "PrivatePrint()" << std::endl; }
};
class Derivedpublic : protected Base {
public:
void DerivedPrint() {
cout << "DerivedPrint()" << endl;
cout << PublicBase << endl;
cout << ProtectedBase << endl;
cout << PrivateBase << endl;//标红
PublicPrint();
ProtectedPrint();
PrivatePrint();//标红
}
};
int main()
{
//-----------------------protected继承
Derivedpublic der;
cout << der.PublicBase << endl;//标红
cout << der.ProtectedBase << endl;//标红
cout << der.PrivateBase << endl;//标红
der.PublicPrint();//标红
der.ProtectedPrint();//标红
der.PrivatePrint();//标红
system("pause");
return 0;
}
编译报错信息:
三、private继承
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
class Base {
public:
int PublicBase;
void PublicPrint() { std::cout << "PublicPrint()" << std::endl; }
protected:
int ProtectedBase;
void ProtectedPrint() { std::cout << "ProtectedPrint()" << std::endl; }
private:
int PrivateBase;
void PrivatePrint() { std::cout << "PrivatePrint()" << std::endl; }
};
class Derivedpublic : private Base {
public:
void DerivedPrint() {
cout << "DerivedPrint()" << endl;
cout << PublicBase << endl;
cout << ProtectedBase <<endl;
cout << PrivateBase << endl;//标红
PublicPrint();
ProtectedPrint();
PrivatePrint();//标红
}
};
int main()
{
//-----------------------protected继承
Derivedpublic der;
cout << der.PublicBase << endl;//标红
cout << der.ProtectedBase << endl;//标红
cout << der.PrivateBase << endl;//标红
der.PublicPrint();//标红
der.ProtectedPrint();//标红
der.PrivatePrint();//标红
system("pause");
return 0;
}
编译结果:
四、总结
1、派生类 内 访问父类
继承方式 | 父类public | 父类protected | 父类private |
---|---|---|---|
public继承 | 可访问 | 可访问 | 不可访问 |
protected继承 | 可访问 | 可访问 | 不可访问 |
private继承 | 可访问 | 可访问 | 不可访问 |
2、派生类 实例对象 访问父类
继承方式 | 父类public | 父类protected | 父类private |
---|---|---|---|
public继承 | 可访问 | 不可访问 | 不可访问 |
protected继承 | 不可访问 | 不可访问 | 不可访问 |
private继承 | 不可访问 | 不可访问 | 不可访问 |