程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中的面向對象筆記,面向對象筆記

C++中的面向對象筆記,面向對象筆記

編輯:C++入門知識

C++中的面向對象筆記,面向對象筆記


公共繼承,相當於屬於關系。如CLASS B:public A,表示B就是A,A做到的,B也能做到。

CLASS A
{};
CLASS B:public A
{};
A a;
B b;
a=b;//錯誤,因為a不一定是b
b=a;//正確,b就是a

 public繼承下,會出現名字覆蓋:B與A若有同名函數,則A中的該函數將被覆蓋,包括A中該函數的重載函數。

 

 

關於虛函數

  含有純虛函數如: virtual void fun()=0; 的類是抽象類,我們不能創建抽象類的對象。若A中有純虛函數,則A a=new A是錯的,而A a=new B才是正確的。

  純虛函數:

    派生類中必須重新聲明該函數。(聲明一個純虛函數的目的是為了讓派生類只繼承接口)

  純虛函數的實現,需要申請才能使用,如下所示

CLASS A
{
    virtual void fun()=0;
};
void A::fun()
{
    //實現
}

CLASS B
{
    virtual void fun()
    {
        A::fun();//需要聲明使用A的實現
    }
};

CLASS C
{
    virtual void fun();//可以自己實現
};
void C::fun()
{
    //C的fun
}

  非純虛函數:

    派生類會繼承該函數的聲明與實現,可自己實現以覆蓋。不安全的原因是:派生類忘記自定義繼承過來的函數時,會使用默認的實現(即基類的實現)。而此  默認的函數實現可能不適合此派生類。

 

  非虛函數:

    抽象類(只能是抽象類)會強制派生類繼承該類的非虛函數,即抽象類的非虛函數將會覆蓋所有派生類的同名函數,此做法剛好與非抽象類的繼承相反。

 

總結:

  在公共繼承下,純虛函數、非純虛函數和非虛函數在抽象類的繼承當中的作用分別是:只繼承接口、繼承接口與默認實現、繼承接口及強制實現。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved