//在运行时的静态联编的例程如下:
#include<iostream>
using namespace std;
class A
{
public:
int get(){return 1;}
};
class B:public A
{
public:
int get(){return 2;}
};
void main()
{
while (1)
{
cout<<"(1)父类(2)子类(3)退出:";
int choice;
cin>>choice;
A*p;
bool quit=false;
switch (choice)
{
case 1:p=new A;
break;
case 2:p=new B;
break;
case 3:quit=true;
break;
default:cout<<"请输入1、2或者3";
break;
}
if (quit==true)
{
break;
}
cout<<p->get()<<endl;
}
#include<iostream>
using namespace std;
class A
{
public:
int get(){return 1;}
};
class B:public A
{
public:
int get(){return 2;}
};
void main()
{
while (1)
{
cout<<"(1)父类(2)子类(3)退出:";
int choice;
cin>>choice;
A*p;
bool quit=false;
switch (choice)
{
case 1:p=new A;
break;
case 2:p=new B;
break;
case 3:quit=true;
break;
default:cout<<"请输入1、2或者3";
break;
}
if (quit==true)
{
break;
}
cout<<p->get()<<endl;
}
}
ps:静态联编在编译时和运行时的效果是一样的,因为基类指针的地址和映射关系提前已设定好