小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

拒絕使用基類成員函數(shù)指針進行任務分派

 quasiceo 2014-01-17

拒絕使用基類成員函數(shù)指針進行任務分派

在某些(或許是錯誤)設計中會在基類中定義成員函數(shù)指針數(shù)組(或其他容器)
然后派生類對其(用派生類的成員函數(shù))進行初始化。
外部進行任務分配時,進入基類接口,查詢對應的成員函數(shù)指針,然后以此路由到具體的派生類中。
但這樣有一個問題:派生類必須優(yōu)先(第一個)繼承這個基類。
因為基類中調(diào)用成員函數(shù)時傳遞的是基類this地址,而派生類的成員函數(shù)的(匯編)實現(xiàn),是直接把傳入的地址認為是(派生類)的起始地址。
那么當派生類不是第一個繼承這個基類時,數(shù)據(jù)就會錯位。當然:虛函數(shù)作為成員函數(shù)時是沒有問題的,還是會保持虛函數(shù)的多態(tài)能力。
因為派生類的虛函數(shù)代碼生成中,會知道(認為)傳入的地址是基類的起始地址,函數(shù)中訪問成員變量都會做(自然的)偏移,以訪問正確的數(shù)據(jù)。
---
說了這么多,就是表示成員函數(shù)指針用來進行調(diào)度分派是很不安全的,而且只能路由到派生類中。
這里我建議使用:std::function。再借助std::bind綁定到各種函數(shù),比如(靜態(tài)綁定)成員函數(shù)。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多