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

第15章 面向對象編程(2)

編輯:C++入門知識

15.2.2 protected成員
可以認為protected訪問標號是private和public的混合:
像private成員一樣,protected成員不能被類的用戶訪問。
像public成員一樣,protected成員可被該類的派生類訪問.
派生類只能通過派生類對象訪問其基類的protected成員,派生類對其基類類型對象的protected成員沒有特殊訪問權限。
提供給派生類型的接口是protected成員和public成員的組合。
15.2.3 派生類
為了定義派生類,使用類派生列表(class derivation list)指定基類。類派生列表指定了一個或多個基類。
只需要了解訪問標號決定了對繼承成員的訪問權限。如果想要繼承基類的接口,則應該進行public派生。
派生類繼承基類的成員並且可以定義自己的附加成員。每個派生類對象包含兩個部分:從基類繼承的成員和自己定義的成員。一般而言,派生類只(重)定義那些與基類不同或擴展基類行為的方面。
1. 定義派生類

class Bulk_item:public Item_base{ 
public: 
    double net_price(size_t) const; 
private: 
    size_t min_qty; 
    double discount; 
}; 
2. 派生類和虛函數
盡管不是必須這樣做,派生類一般會重定義所繼承的虛函數。如果派生類沒有重定義某個虛函數,則使用基類中定義的版本。
派生類型必須對象要重定義的每個繼承成員進行聲明。
派生類中虛函數的聲明必須與基類中的定義方式完全匹配,但有一個例外:返回對基類型的引用(或指針)的虛函數。派生類中的虛函數可以返回基類函數所返回類型的派生類型的引用(或指針)。
一旦函數在基類中聲明為虛函數,它就一直為虛函數,派生類無法改變該函數為虛函數這一事實。派生類重定義虛函數時,可以使用virtual保留字,擔不是必須這樣做。
3. 派生類對象包含基類對象作為子對象
派生類對象由多個部分組成:派生類本身定義的(非static)成員加上由基類(非static)成員組成的子對象。
C++語言不要求編譯器將對象的基類部分和派生部分連續排列。
4. 派生類中的函數可以使用基類的成員
像任意成員函數一樣,派生類函數可以在類的內部或外部定義。

double Bulk_item::net_price(size_t cnt) const 

    if(cnt>=min_qty) 
        return cnt*(1-discount)*price; 
    else 
        return cnt*price; 

因為每個派生類對象都有基類部分,類可以訪問其基類的public和protected成員,就好像那些成員是派生類自己的成員一樣。
5. 用作基類的類必須是已定義的
每個派生類包含並且可以訪問其基類的成員,為了使用這些成員,派生類必須知道它們是什麼。這一規則暗示著不可能從類自身派生出一個類。
6. 用派生類做基類
基類本身可以是一個派生類。
最底層的派生類對象包含其每個直接基類和間接基類的子對象。
7. 派生類的聲明
如果需要聲明一個派生類,則聲明包含類名但不包含派生列表。

摘自 xufei96的專欄

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