第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

C++的核心特性:繼承機(jī)制

標(biāo)簽:
C++

这篇文章要写的是c++的继承机制。

c++的类里面的三种函数,第一种是pure virtual function(纯虚函数),第二种是virtual function(虚函数),第三种是non-virtual function(非虚函数)。在设计一个类的时候,(尤其是基类的时候)要考虑设计的函数,要写成什么类型。

纯虚函数:派生类只继承接口
虚函数:派生类可以继承接口和一个默认的实现
非虚函数:派生类继承基类的一个强制的实现
(from 《effective  c++》)

下面分别举几个例子:

  • 纯虚函数:

class Base_PureVirtualFunction {public :    virtual void print() = 0;
};class Derived_PureVirtualFunction:public Base_PureVirtualFunction {public:    void print() {        cout << "derived " << endl;
    }
};int main() {    //Base_PureVirtualFunction b;//  错误,没有办法创建含有纯虚函数的对象,因为纯虚函数没有相应的实现
    Derived_PureVirtualFunction d;
    d.print()    return 0;
}

纯虚函数的作用是 只希望派生类继承基类的接口,然后去根据派生类的情况,去给他一个实现。

  • 虚函数

class Base_VirtualFunction {public:    virtual void print() {        cout << "base" << endl;
    }
};class Drived_VirtualFunction:public Base_VirtualFunction {public:    void print() {        cout << "derived" << endl;
    }
};int main() {    //demo2
    Base_VirtualFunction b;
    b.print();     //输出base

    Drived_VirtualFunction d;
    d.print();    //输出derived

    b = d;
    b.print();    //输出base

    // 关于虚函数的另外一个知识点,动态联编
    // 动态联编 只有指针和引用有效
    Base_VirtualFunction *b1 = &d;
    b1->print();    //输出derived

    Base_VirtualFunction &b2 = d;
    b2.print();     //输出derived

    system("pause");    return 0;
}

虚函数的机制是,基类向派生类提供一个接口和默认的实现,派生类可以根据情况,自己定义符合自身的实现,也可以调用基类的默认的实现。这里还有关于虚函数的另外一个知识点,动态联编,重点不在这里,就不解释了。

  • 非虚函数

class Base_NonVirtualFunction {public:    void print() {        cout << "non virtual function " << endl;
    }
};class Drived_NonVirtualFunction :public Base_NonVirtualFunction {public :    void other_print() {        cout << "other " << endl;
    }
};int main(){
    Base_NonVirtualFunction b;
    b.print();   //输出non virtual function

    Drived_NonVirtualFunction d;
    d.print();   // 输出non virtual function
    d.other_print();  //输出other}

对于非虚函数:
1 . 派生类其实继承了基类的所有函数的数据成员
2 .  非虚函数的作用是基类给派生类的一个强制性实现的函数

3 . 对于一个基类给派生类的一个强制性实现的函数,派生类也可以重新定义一个相同名字的函数,不过这样就是覆盖了。派生类的函数会覆盖掉基类的函数。

一个新的例子:

class Base_NonVirtualFunction {public:    void print() {        cout << "non virtual function " << endl;
    }
};class Drived_NonVirtualFunction :public Base_NonVirtualFunction {public :    void other_print() {        cout << "other " << endl;
    }       //和子类同名的函数
    void print() {        cout << " derived" << endl;
    }
};int main(){
    Base_NonVirtualFunction b;
    b.print();    //输出non virtual function

    Drived_NonVirtualFunction d;
    d.print();    //输出 derived
    d.other_print();   //输出 other}

这里想强调的是,无论是自己在设计类的时候,还是在看别人的代码的时候,首先应该注意一下:



作者:zhaozhengcoder
链接:https://www.jianshu.com/p/c6939fcc5bf4


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 1
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消