青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Kisser Leon

這個kisser不太冷
posts - 100, comments - 102, trackbacks - 0, articles - 0

c++只支持單分派(single dispatch) 探討2

Posted on 2007-03-13 11:36 kk 閱讀(919) 評論(2)  編輯 收藏 引用 所屬分類: C++
上次寫了一下,結果漏洞百出,sigh。不過在高手的批評下,本人再多try了幾下,似乎又明白了不少,呵呵。如果有問題,請各位高手不吝賜教。謝謝哈!
下面演示了一下c++不支持雙分派。一共有四各類,A, AD, B, BE, 其中AD是A的子類,BE是B的子類。他們都有一個叫output的函數(函數名不一定要一樣的)。問題出現在哪里呢?問題出現在A或AD類中output函數里的b->output(a);這個語句。其中b是能夠動態track到他自己的類型的,但是a就不行了!因為它已經被靜態綁定到A類型了,所以輸出結果是:
output信息:
///////////////////////////////
AD:BE
BE:A //如果正確的話,這里應該輸出BE:AD
AD:B
B:A? //如果正確的話,這里應該輸出B:AD

AD:BE
BE:A
A:B
B:A

///////////////////////////////
現在把接口改成AD*a, 顯示出錯信息:
error: invalid conversion from `A*' to `AD*'
///////////////////////////////

現在把b->output(a)改成b->output(this),輸出結果如下:
AD:BE
BE:AD
AD:B
B:AD

AD:BE
BE:A
A:B
B:A
///////////////////////////////
結果就正確了!因為this顯然已經指向了正確的類型,而且也沒有經過中間步驟地轉換,所以其信息還是能夠runtime找到的。
over。

不知上面的解釋是否正確,如果有問題,請各位高手賜教了。小弟先謝謝了。



代碼如下:
////////////////////////////////////
#include <iostream>
#include <list>
using namespace std;

class A;
class AD;
//B
class B
{
public:
?void virtual output(A * a){cout << "B:A" << endl;}
?void virtual output(AD * ad){cout << "B:AD" << endl;}
};
class BE : public B
{
public:
?void output(A * a){cout << "BE:A" << endl;}
?void output(AD * ad){cout << "BE:AD" << endl;}
};

//A
class A
{
public:
?void virtual output(B * b, A * a){cout << "A:B" << endl;b->output(a);}
?void virtual output(BE * b, A * a){cout << "A:BE" << endl;b->output(a);}
};
class AD : public A
{
public:
?void output(B * b, A * a){cout << "AD:B" << endl;b->output(a);}
?void output(BE * b, A * a){cout << "AD:BE" << endl;b->output(a);}
};

int main()
{
??? A * pAD = new AD;
??? pAD->output(new BE, pAD);
??? pAD->output(new B, pAD);

cout<<endl;

??? A * pA = new A;
??? pA->output(new BE, pA);
??? pA->output(new B, pA);
?
?return 0;
}

Feedback

# re: c++只支持單分派(single dispatch) 探討2  回復  更多評論   

2007-03-13 13:28 by netdigger
class BE : public B
{
public:
void output(A * a){cout << "BE:A" << endl;}
void output(AD * ad){cout << "BE:AD" << endl;}
};

當你呼叫b->output(a)時,由A的類型決定,而A的類型又由上一層virtual output(B * b, A * a)決定,所以他只能調用output(A * a)

但是用this后,這個傳遞進去就是類對像本身的類型,所以能得到你想要得到的結果.
兩個程序都沒有錯,錯在你對函數的重載理解上..

# re: c++只支持單分派(single dispatch) 探討2  回復  更多評論   

2007-03-13 14:36 by 小熊
不是很明白你的意思哦。
我覺得問題出在了,output(A * a)的時候,它被靜態綁定到了A類型,而不是動態得runtime的得到它自己的類型哦。如果c++中能夠動態的決定參數的類型的話,那么它應該調用的是output(AD * ad), 而不是output(A * a).
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美性大战xxxxx久久久| 久久视频这里只有精品| 久久精品五月婷婷| 亚洲女人天堂成人av在线| 午夜欧美不卡精品aaaaa| 亚洲激情图片小说视频| 亚洲精品在线视频| 亚洲狠狠婷婷| 亚洲高清毛片| 亚洲国产日韩欧美在线图片| 国产欧美不卡| 国产精品一卡二卡| 国产美女高潮久久白浆| 国产精品美腿一区在线看 | 亚洲少妇最新在线视频| 一区二区三区黄色| 国内精品视频666| 99国产精品99久久久久久粉嫩| 一本色道久久88精品综合| 亚洲综合不卡| 美女久久一区| 亚洲天堂网在线观看| 久久久噜噜噜| 国产精品揄拍500视频| 亚洲人在线视频| 午夜精品久久久久99热蜜桃导演| 国产精品久久久久9999| 在线观看一区欧美| 欧美凹凸一区二区三区视频| 久久黄金**| 亚洲三级免费| 香蕉久久精品日日躁夜夜躁| 欧美美女视频| 99成人在线| 亚洲久久在线| 欧美在线视频观看| 国产亚洲成年网址在线观看| 欧美在线观看视频在线| 欧美一区二区三区免费视| 国产一区二区中文| 欧美高清视频一区二区| 欧美日韩一区自拍| 欧美在线日韩精品| 久久嫩草精品久久久久| 99亚洲视频| 欧美在线观看天堂一区二区三区| 国内外成人在线视频| 亚洲国产黄色| 国产精品欧美经典| 欧美不卡一区| 欧美性大战xxxxx久久久| 美女视频黄 久久| 亚洲一区日韩在线| 久久一区二区三区四区| 一区二区高清视频在线观看| 亚洲淫性视频| 99精品免费视频| 久久免费99精品久久久久久| 亚洲综合清纯丝袜自拍| 欧美国产乱视频| 欧美专区日韩专区| 国产精品久久久久久亚洲毛片| 欧美成人午夜| 在线免费观看日韩欧美| 午夜精品影院在线观看| 先锋影音久久久| 欧美日韩中文在线| 亚洲三级色网| 在线亚洲精品| 欧美日韩第一区日日骚| 蜜桃久久精品一区二区| 一区在线观看| 欧美成人精品不卡视频在线观看| 久久婷婷国产综合国色天香| 国产亚洲成精品久久| 欧美一区二区三区四区在线观看| 亚洲欧美日韩中文在线制服| 国产精品jizz在线观看美国 | 午夜影视日本亚洲欧洲精品| 亚洲精品在线一区二区| 欧美日韩国产页| 亚洲欧美在线x视频| 美女图片一区二区| 欧美专区18| 久久精品国产免费观看| 精品电影一区| 欧美午夜精品久久久| 先锋影音网一区二区| 欧美gay视频| 亚洲欧美制服中文字幕| 亚洲国产欧美精品| 国产精品捆绑调教| 免费的成人av| 欧美制服丝袜| 一区二区三区久久精品| 亚洲国产天堂久久国产91| 午夜精品一区二区三区四区 | 99香蕉国产精品偷在线观看| 久久久噜噜噜久久人人看| 亚洲精品日韩在线观看| 国产精品一级| 欧美日韩亚洲免费| 欧美成人自拍| 久久综合给合| 久久综合久久久| 久久久91精品| 国产香蕉久久精品综合网| 亚洲欧美综合精品久久成人| 午夜激情亚洲| 欧美精品福利视频| 亚洲第一精品影视| 黄色精品一二区| 亚洲国产黄色| 亚洲美女在线视频| 亚洲无玛一区| 午夜精品久久99蜜桃的功能介绍| 一二美女精品欧洲| 亚洲欧美视频在线| 久久久噜噜噜久久| 亚洲承认在线| 一区二区高清在线| 亚洲欧美日韩国产| 欧美成人视屏| 亚洲麻豆av| 久久久久九九九| 欧美国产日韩免费| 美女视频网站黄色亚洲| 欧美日韩中文字幕精品| 国产亚洲美州欧州综合国| 亚洲黑丝在线| 亚洲欧美日韩爽爽影院| 久久这里有精品15一区二区三区| 欧美电影免费观看高清| 宅男噜噜噜66一区二区66| 久久久精品动漫| 欧美色欧美亚洲另类二区| 91久久精品国产| 久久精品国产视频| 日韩天堂在线观看| 欧美成人一区二区三区| 国语自产偷拍精品视频偷| 欧美亚洲一区二区在线观看| 99re热精品| 欧美日韩国产欧美日美国产精品| 亚洲欧洲日韩在线| 亚洲成色最大综合在线| 欧美人成在线| 午夜在线观看免费一区| 久久精品在线| aa亚洲婷婷| 欧美一区二区视频在线| 久久久中精品2020中文| 国产亚洲日本欧美韩国| 性视频1819p久久| 午夜一区二区三区不卡视频| 国外成人性视频| 欧美大片免费观看在线观看网站推荐| 午夜精品福利电影| 亚洲精品视频免费| 一区二区免费在线播放| 国产日本欧美视频| 男女av一区三区二区色多| 欧美高清视频| 亚洲欧美日韩国产综合在线| 欧美在线视频观看| 亚洲精品久久嫩草网站秘色| 欧美国产精品va在线观看| 久久精品国产第一区二区三区| 国产精品一区二区视频 | 国产精品福利网站| 欧美在线一区二区三区| 欧美+日本+国产+在线a∨观看| 日韩视频久久| 久久久之久亚州精品露出| 亚洲天堂网站在线观看视频| 久久久久www| 久久久久成人精品| 欧美激情一区二区三区在线视频 | 黑人巨大精品欧美一区二区小视频 | 亚洲精品久久久蜜桃 | 久久婷婷成人综合色| 中日韩高清电影网| 欧美大片在线看| 免费国产自线拍一欧美视频| 国产精品中文在线| 亚洲性感激情| 亚洲视频一区二区免费在线观看| 欧美1区视频| 欧美国产视频日韩| 亚洲国产精品传媒在线观看| 久久久人成影片一区二区三区| 欧美亚洲一区三区| 国产亚洲综合性久久久影院| 亚洲影院在线观看| 久久久噜噜噜| 日韩图片一区| 国产精品高精视频免费| 亚洲欧美日韩国产一区二区三区| 久久成人在线| 亚洲国产日韩在线一区模特|