您的位置: 旅游網(wǎng) > 影視 >> 導(dǎo)演

    我能防止別人繼承我自己的類嗎的

    發(fā)布時間:2021-10-26 07:15:14

    可以,但你為什么要那么做呢?這是兩個常見的回答:

    效率:避免我的函數(shù)被虛擬調(diào)用

    接下來就需要大家的努力了。 安全:保證我的類不被用作一個基類(例如,保證我能夠復(fù)制對象而不用擔(dān)心出事)

    根據(jù)我的經(jīng)驗,效率原因往往是不必要的擔(dān)心。在C++中,虛擬函數(shù)調(diào)用是如此之快,以致于它們在一個包含虛擬函數(shù)的類中被實際使用時,相比普通的函數(shù)調(diào)用,根本不會產(chǎn)生值得考慮的運行期開支。注意,僅僅通過指針或引用時,才會使用虛擬調(diào)用機制。當(dāng)直接通過對象名字調(diào)用一個函數(shù)時,虛擬函數(shù)調(diào)用的開支可以被很容易地優(yōu)化掉。

    如果確實有真正的需要,要將一個類封閉起來以防止虛擬調(diào)用,那么可能首先應(yīng)該問問為什么它們是虛擬的。我看見過一些例子,那些性能表現(xiàn)不佳的函數(shù)被設(shè)置為虛擬,沒有其他原因,僅僅是因為“我們習(xí)慣這么干”。

    這個問題的另一個部分,由于邏輯上的原因如何防止類被繼承,有一個解決方案。不幸的是,這個方案并不完美。它建立在這樣一個事實的基礎(chǔ)之上,那就是:大多數(shù)的繼承類必須建立一個虛擬的基類。這是一個例子:

    class Usable;

    class Usable_lock {

    friend class Usable;

    private:

    Usable_lock() {}

    Usable_lock(const Usable_lock) {}

    };

    class Usable : public virtual Usable_lock {

    // ...

    public:

    Usable();

    Usable(char*);

    // ...

    };

    Usable a;

    class DD : public Usable { };

    DD dd; // 錯誤: DD::DD() 不能訪問

    // Usable_lock::Usable_lock()是一個私有成員

    查看本文來源

    鄭州治婦科哪家醫(yī)院好
    米諾地爾搽劑治療斑禿用法
    銀川陰道炎
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 春暖花开亚洲性无区一区二区| 亚洲精品成a人在线观看| 免费99精品国产自在现线| 亚洲欧美日韩精品中文乱码| 亚洲中文字幕av每天更新| 久久久久亚洲精品美女| freesex1718处xx| 337p欧美日本超大胆艺术裸| 青青青青青青久久久免费观看| 精品无码国产污污污免费网站| 波多野结衣中文一区二区免费| 欧美zoozzooz在线观看| 新梅瓶1一5集在线观看| 大乳丰满人妻中文字幕日本| 国产日产欧洲无码视频| 又粗又大又爽又长又紧又水| 亚洲日韩亚洲另类激情文学| 久久伊人精品热在75| a毛片免费观看完整| 国产a免费观看| 男生女生差差差很痛| 欧美三级在线观看不卡视频| 无限看片在线版免费视频大全| 在线天堂中文字幕| 国产成人久久精品亚洲小说 | 中文字幕人成人乱码亚洲电影| 99热热久久这里只有精品166| 高潮内射免费看片| 狼群视频在线观看www| 日韩激情视频在线| 天天做天天爱夜夜爽毛片毛片| 国产成人精品免费视频大全可播放的 | 成年网址网站在线观看| 国产精品亚洲精品日韩已方 | 国产精品成人va在线观看| 厨房切底征服岳| 乱系列中文字幕在线视频| bl道具play珠串震珠强迫| 高清不卡毛片免费观看| 欧美日韩综合一区| 影音先锋男人看片资源|