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

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>
            久久成人18免费网站| 国产亚洲激情在线| 先锋影院在线亚洲| 性色av一区二区三区| 久久精品国产精品亚洲| 久久久精品网| 欧美精品一区二区久久婷婷| 免费欧美网站| 亚洲高清av| 亚洲伦理在线免费看| 一区二区三区.www| 欧美一级大片在线免费观看| 麻豆精品视频在线| 欧美日精品一区视频| 国产日韩欧美一二三区| 精品999日本| 一区二区高清视频| 久久久久久久999精品视频| 欧美成人免费在线| 亚洲最新在线| 久久日韩粉嫩一区二区三区| 欧美日韩亚洲一区| 狠狠色综合一区二区| 亚洲午夜精品一区二区| 另类天堂av| 一区二区三区www| 久久免费的精品国产v∧| 国产精品二区三区四区| 亚洲国产第一| 久久国产精品99精品国产| 亚洲国产女人aaa毛片在线| 午夜欧美精品| 国产精品www.| 亚洲精品国产精品国产自| 久久九九精品99国产精品| 一区二区三区产品免费精品久久75| 久久久久亚洲综合| 国产精品素人视频| 一本色道久久综合亚洲精品婷婷 | 亚洲精品无人区| 久久精品盗摄| 亚洲无毛电影| 欧美日韩综合一区| 亚洲精品欧美一区二区三区| 玖玖精品视频| 久久久国产一区二区| 国产视频精品免费播放| 欧美有码在线观看视频| 国产精品99久久久久久宅男| 欧美精品一区二区三区在线播放 | 亚洲第一久久影院| 久久久久国产一区二区| 国产亚洲成年网址在线观看| 西瓜成人精品人成网站| 宅男精品视频| 国产精品久久久久久久久婷婷| 亚洲视频在线观看一区| 亚洲精品国产日韩| 国产亚洲欧美日韩美女| 午夜精品视频网站| 亚洲天堂av图片| 国产精品久久看| 亚洲伊人色欲综合网| 洋洋av久久久久久久一区| 欧美日本免费一区二区三区| 一二三区精品| 亚洲一区日韩在线| 国产三级精品三级| 久久综合中文字幕| 欧美二区在线| 亚洲特级片在线| 亚洲婷婷综合色高清在线 | 久久一区二区三区超碰国产精品 | 午夜免费日韩视频| 亚洲一区二区精品在线| 国产免费成人av| 久久亚洲国产成人| 免费日韩视频| 一卡二卡3卡四卡高清精品视频| 99这里只有精品| 国产一区二区久久久| 欧美成人精品影院| 欧美日韩视频免费播放| 欧美亚洲在线视频| 久久精品国产77777蜜臀| 91久久国产精品91久久性色| 一区二区三区av| 国产自产精品| 亚洲福利视频一区| 欧美特黄一区| 免费人成网站在线观看欧美高清| 欧美激情一区二区三区成人| 午夜精品一区二区三区在线| 欧美主播一区二区三区| 亚洲日本欧美| 香蕉久久精品日日躁夜夜躁| 日韩一级精品| 欧美一区二视频| 一区电影在线观看| 久久视频国产精品免费视频在线 | 久久久精品网| 欧美久久久久久久久久| 久久精品在线免费观看| 欧美日韩一区综合| 欧美91福利在线观看| 国产精品白丝av嫩草影院| 裸体歌舞表演一区二区| 国产精品久久久久久久久婷婷| 欧美福利视频网站| 国产亚洲欧洲一区高清在线观看| 亚洲人成亚洲人成在线观看图片| 国产精品一区二区久久久久| 亚洲人成网站在线播| 在线欧美日韩精品| 欧美亚洲在线播放| 亚洲伊人色欲综合网| 欧美紧缚bdsm在线视频| 欧美日韩国产成人在线| 国产一区二区久久| 中文国产一区| 一本色道久久88精品综合| 久久久久久日产精品| 欧美亚洲综合另类| 国产精品久久久久av免费| 最新国产の精品合集bt伙计| 亚洲福利一区| 久久免费视频这里只有精品| 久久精品亚洲国产奇米99| 国产精品中文字幕欧美| 亚洲图片欧洲图片av| 亚洲一区二区在线看| 欧美日韩黄色大片| 日韩一二三区视频| 一区二区三区精密机械公司 | 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲一区二区日本| 亚洲免费视频一区二区| 欧美日韩综合另类| 99精品热6080yy久久| 亚洲专区一区| 国产精品美女一区二区| 亚洲欧美日韩国产中文在线| 欧美亚洲在线| 国语精品一区| 久久久久国产一区二区三区| 欧美成va人片在线观看| 日韩视频在线一区二区三区| 欧美日韩极品在线观看一区| 一本久久a久久免费精品不卡| 亚洲一区二区伦理| 欧美小视频在线| 午夜精品久久久久久久男人的天堂| 欧美亚洲日本一区| 精品1区2区3区4区| 欧美激情一区二区三区高清视频| 亚洲精品国产精品国自产观看| 亚洲视频在线观看三级| 国产欧美日韩亚州综合| 久久伊人亚洲| 亚洲精品中文字| 欧美一区二区三区精品| 狠狠色丁香久久婷婷综合丁香| 久久久人成影片一区二区三区观看| 亚洲第一主播视频| 午夜精品短视频| 亚洲第一精品影视| 欧美三区在线| 久久久国产精品一区| 亚洲精品日本| 久久嫩草精品久久久精品一| 亚洲精品欧美一区二区三区| 国产日韩欧美亚洲一区| 欧美成人免费在线视频| 亚洲欧美成人| 91久久久久久久久久久久久| 欧美亚洲一区二区在线观看| 亚洲日本欧美| 欧美日韩小视频| 亚洲精品欧美精品| 国产精品欧美一区喷水| 蜜桃伊人久久| 午夜精品久久一牛影视| 亚洲国产精品一区| 久久久久女教师免费一区| 一区二区精品国产| 曰韩精品一区二区| 国产精品美女主播在线观看纯欲| 久热国产精品视频| 亚洲欧美一区二区原创| 亚洲精品在线免费观看视频| 欧美v日韩v国产v| 久久精品91久久久久久再现| 一本色道久久88亚洲综合88| 亚洲国产精品va在线观看黑人| 国产欧美91| 国产精品美女久久久免费 | 国产一区二区精品| 国产精品久久久久婷婷| 欧美精品久久久久久久久久| 久久在线免费观看|