亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: C++ private virtual: [打印本頁]

作者: 魔鬼的驚嘆    時間: 2016-08-12 15:12
標題: C++ private virtual:
本帖最后由 魔鬼的驚嘆 于 2016-08-12 15:14 編輯

private屬性是不可繼承的,derived只繼承了base的callfun,但是在main中當derived對象調用callfun時,callfun中的fun函數(shù)是哪來的(derived類中沒有fun函數(shù)定義),難道是virtual可以private繼承的?
#include <iostream>
using namespace std;
class base
{
    public:
        void callfun()
        {
            fun();
        }
    private:
        virtual void fun()
        {
            cout<<"in base"<<endl;
        }
};

class derived:public base
{
};

int main()
{
    derived n;
    n.callfun();
    return 0;
}

作者: idi0t    時間: 2016-08-12 16:54
子類擁有父類的完整拷貝。
作者: matchbox1224    時間: 2016-08-12 17:13
這個和virtual沒有任何關系
作者: windoze    時間: 2016-08-12 21:55
private和virtual沒有任何關系!
private和virtual沒有任何關系!
private和virtual沒有任何關系!
重要的事情說三遍。

只要父類中的函數(shù)是virtual,它就可以在子類里重載,并且展示多態(tài)性,private只是阻止子類直接訪問父類的實現(xiàn)。
作者: a742794196    時間: 2016-08-17 09:03
會繼承過來的,你可以選擇進行重新定義,如何沒有新的定義的話,默認就是繼承的 base類的實現(xiàn)吧。
作者: action08    時間: 2016-08-19 07:58
感覺base和virtual要靈活運用,總之cpp這點很神奇,多態(tài)性
作者: bskay    時間: 2016-08-19 14:54
private 只在編譯時有用, 運行時無用;
換句話說
你提供一個.h 一個.obj
別人改了你的.h里面的private為public,引用你原來的私有函數(shù)
然后鏈接以前編譯的obj,一樣能正確運行的
作者: 感冒九十九    時間: 2016-10-25 14:24
這個應該會產生編譯錯誤吧,訪問權限沒問題嗎?

作者: lxyscls    時間: 2016-10-25 15:58
virtual是運行時,private訪問權限編譯期就決定了




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2