1、虚继承
#include<iostream>
using namespace std;
class stu
{
public:
int a;
stu()
{
a = 13;
}
};
class stu1 :virtual public stu//虚继承,只是对父类的成员有使用权。
{//虚拟继承是多重继承中所特有的概念。虚拟基类是为解决多重继承而出现的。解决多继承中访问不明确问题。
public:
};
class stu2 :virtual public stu
{
public:
};
class stu3 :public stu1,public stu2
{
public:
};
int main()
{
stu3 db;
cout<<db.a<<endl;
system("pause");
return 0;
}
2、联编
#include<iostream>
using namespace std;
class stu//联编是指在程序执行的时候才将函数实现与函数调用关联。
{
public:
void fun()//静态联编。
{
cout <<"fun\n";
}
virtual void fun2()//静态联编。
{
cout << "fun2.0\n";
}
};
class stu1 :public stu {
virtual void fun2()
{
cout << "fun2.1\n";
}
};
//void fun1()//静态联编
//{
// cout "fun1\n";
//}
int main()
{
/*stu db;
db.fun();//静态联编
fun1()*/
/*stu* db = new stu1;//静态联编
db->fun2();*/
stu* a;
int b;
cin >> b;
switch (b)
{
case 1: a = new stu;
break;
case 2: a = new stu1;
break;
}
a->fun2();//动态联编
system("pause");
return 0;
}
*c++里面的动态联编只针对多态,C语言中只有静态联编。
本文探讨了C++中的虚继承机制如何解决多重继承中的访问不明确问题,并通过实例展示了动态联编在多态中的应用,涉及静态与动态调用的区分。
1632

被折叠的 条评论
为什么被折叠?



