作者:aaron飞飞 | 来源:互联网 | 2021-09-05 04:45
实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <iostream>
using namespace std;
class a{
friend class pal;
private :
int i;
protected :
int j;
public :
int k;
};
class b: public a{
protected :
int l;
};
class c: protected a{};
class d: private a{};
class e: public b{};
class pal{
public :
void f(a a1){
cout<<a1.i; 正确,友元能访问私有成员= "" }= "" void = "" f1(b= "" b1){= "" cout<<b1.i;= "" 正确,友元能访问派生类的基类部分= "" cout<<b1.l;= "" 出错,pal类不是b的友元= "" };= "" class = "" deri_pal: public = "" pal{= "" public := "" f2(a= "" a1){= "" cout<<a.i;= "" 出错,友元不能继承= "" int = "" main()= "" {= "" a= "" a1;= "" b= "" b1;= "" c= "" c1;= "" d= "" d1;= "" e= "" e1;= "" a1= "b1;//正确,只有公共继承的派生类才能向基类转换" system ( "pause" );= "" return = "" 0;= "" <= "" pre= "" >
</a1.i;></iostream>
|
对基类指针进行动态绑定时,派生类必须是public派生而来,否则不能把基类指针绑定到派生类对象上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <iostream>
using namespace std;
class a{};
class b: public a{};
class c: protected a{};
class d: private a{};
class bb: public b{};
class cc: public c{};
class dd: public d{};
int main()
{
a a1;b b1;c c1;d d1;bb bb1;cc cc1;dd dd1;
a* a1=&b1;
a* a2=&c1;
a* a3=&d1;
a* a4=&bb1;
a* a5=&cc1;
a* a6=&dd1;
system ( "pause" );
return 0;
}
</iostream>
|
以上这篇有关C++继承与友元、继承与类型转换详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。