永发信息网

C++ 如何一个程序来区分静态连编和动态连编

答案:1  悬赏:0  手机版
解决时间 2021-03-07 00:37
有人能拿 2个简单的程序对比下吗? 谢谢了
最佳答案
如果没记错的话,有一种纯虚基类,是这样的:
class c1
{
public:
virtual int f1()=0;
};
这样的类不能直接生成对象,只能被继承。但是类里面就含有f1这个函数。
class c2:public c1
{
public:
int f1()
{
return 0;
}
};
class c3:public c1
{
public:
int f1()
{
return 1;
}
};
这样就有了一个c1的子类c2、c3实现了虚函数 f1()的,可以直接生成对象。
那么,如果使用c1类的指针指向c2和c3,就可以分别调用c2:f1()和c3:fq()。
那么,如果有如下程序段:
c1* a;
c2 C2;
c3 C3;
int b;
cin>>b;
if(b==0)
{
a=&C2;
}
else
{
a=&C3;
}
cout<<a->f1();
那么,运行的结果是什么呢?显然要在运行时才能确定。这就是动态联编,在程序里都有动态联编的查找表。除此以外任何的多态都时静态,聪明的62616964757a686964616fe58685e5aeb931333262353366编译器都是直接的调用相关的函数。这里有几个条件:纯虚基类,继承,纯虚基类的指针指向继承的类成员,调用纯虚基类的虚函数。于是这样就会引起编译器无法判断运行时应该调用哪个函数,只好使用动态联编的方法,在运行的时候由程序自行决定。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【longevity】Mayweallbeblessedwithlongevit
是10厘米.每节至少需要铁皮多少平方厘
怎样把airplay设置成默认音乐播放器?
白鲸属于齿鲸类吗
银座超市我想知道这个在什么地方
UV,DUV,EUV在集成电路中是什么意思?目前只知
职、责、权不对应时,对组织破坏性很大,应该
求《请以你的名字呼唤我》百度云 有字幕的 清
做滴滴快车要什么车多少钱的车
我是外地的,想在沈阳买房子,如果向银行贷款
请问倩女幽魂89突破武海甲鱼要多少防才顶得住
得道正果云吞在哪里啊,我有事要去这个地方
提问:下述哪些疾病与HP感染有关A.急性胃炎B.
蚂蚁上树是什么菜
求现在dnf能够完美流畅运行的电脑配置,现在
推荐资讯
伊人秀美容美发养生馆怎么去啊,有知道地址的
谢娜代言的,妆后葵儿cc,现在有十二盒想清货
女孩子喜欢什么样的男人长脸还是方脸
红花村在哪里啊,我有事要去这个地方
如何能把新淘宝店推广出去
vivox5pro怎么调出那个像苹果手机屏幕上一样
你一半假我一半打一字
这个狗狗是什么狗狗
百度网盘可以上传隐藏文件(以“.”开头的文
下列关于流动性风险的说法中,正确的是()。A.
进出口货物的收发货人可以在哪些情况下申请修
揭阳市普宁华侨管理区环保局在哪里啊,我有事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?