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

C++:private繼承與public繼承

編輯:C++入門知識

1 private, public, protected 訪問標號的訪問范圍
private:只能由1.該類中的函數、2.其友元函數訪問。
不能被任何其他訪問,該類的對象也不能訪問。

protected:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問。
但不能被該類的對象訪問。

public:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。

注:友元函數包括3種:設為友元的普通的非成員函數;設為友元的其他類的成員函數;設為友元類中的所有成員函數。


2 類被繼承後方法屬性變化
private 屬性不能夠被繼承。
使用private繼承, 父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承, 父類的protected和public屬性不發生改變;


3 private繼承和public繼承的適用情況
C++將public繼承視為is-a關系。private繼承則並不意味著is-a關系,private繼承意味著implemented-in-terms-of(根據某物實現出)。private繼承意味著只有實現部分被繼承,接口部分被略去。private繼承在軟件設計層面上沒有意義,其意義只在於軟件實現層面。

private繼承:

1)編譯器不會自動將一個子類對象轉換為一個父類對象,而public繼承會;

2)子類中由父類繼承而來的成員(protected和public)都變為private。

implemented-in-terms-of也可以由復合實現。在應用域,復合意味著has-a;在實現域,復合意味著is-implemented-in-terms-of。盡可能使用復合實現這種關系,必要時(涉及protected成員或virtual函數時)才使用private繼承。


 

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