#include <iostream>
#include <string>
using namespace std;
/*---------------------------------
13-8在编译时的动态联编
---***在虚函数中没有采用指针或者引用,那就无法实现动态联编。***---
那么联编工作将会在编译时进行,而不是在程序运行时进行的。
---------------------------------*/
class A
{
public:
virtual int get() //若有virtual修饰,后面的代码就是属于“在编译时的静态联编”类型
//这一点,情况跟小节“C++ 虚函数 3--虚函数应用编程 动态联编/运行时联编”一样
// int get() //若无virtual修饰,后面的代码就是属于“在运行时的静态联编”类型
{return 1;}
};
class B:public A
{
public:
int get()
{return 2;}
};
int main()
{
while(1)
{
cout<<"1父类 2子类 3退出: ";
int choice;
cin>>choice;
//A *p;
A p; //换做定义为一个对象
bool quit =false;
switch(choice)
{
case 1: p=A(); //通过调用类A的构造函数,创造一个临时对象
break;
case 2: p=B();
break;
case 3: quit=true;
break;
default: cout<<"请输入1、2或者3: ";
break;
}
if(true==quit)
break;
cout<<p.get()<<endl;
}
return 0;
}
运行结果:
1父类 2子类 3退出: 1
1
1父类 2子类 3退出: 2
1
1父类 2子类 3退出: 3
Press any key to continue
C++ 虚函数 5--3 在编译时的动态联编 - 在虚函数中没有采用指针或者引用,那就无法实现动态联编
最新推荐文章于 2019-09-30 10:12:00 发布