c++多層派生時的建構函式vmceo
乙個類不僅可以派生出乙個派生類,派生類還可以繼續派生,形成派生的層次結構。在上面敘述的基礎上,不難寫出在多級派生情況下派生類的建構函式。
通過例下面的程式,讀者可以了解在多級派生情況下怎樣定義派生類的建構函式。相信大家完全可以自己看懂這個程式。
[例] 多級派生情況下派生類的建構函式。
#include
#include
using namespace std;
class student//宣告基類
void display( )//輸出基類資料成員
;class student2:public student1 //宣告間接公用派生類student2
void show_all( ) //輸出全部資料成員
執行時的輸出如下:
num:10010
name:li
age:17
score:89
請注意基類和兩個派生類的建構函式的寫法。
基類的建構函式首部:
student(int n, string nam)
派生類student1的建構函式首部:
student1(int n, string nam],int a):student(n,nam)
派生類student2的建構函式首部:
student2(in n, string nam,int a,int s):student1(n,nam,a)
注意不要寫成:
student2(int n, string nam,int a,int s):student1(n,nam),student1(n, nam, a)
不要列出每一層派生類的建構函式,只需寫出其上一層派生類(即它的直接基類)的建構函式即可。在宣告student2類物件時,呼叫student2建構函式;在執行student2建構函式時,先呼叫student1建構函式;在執行student1建構函式時,先呼叫基類student建構函式。初始化的順序是:
先初始化基類的資料成員num和name。
再初始化student1的資料成員age。
最後再初始化student2的資料成員score。
c++類多級派生時的訪問屬性
在實際專案開發中,經常會有多級派生的情況。如圖11.9所示的派生關係:類a為基類,類b是類a 的派生類,類c是類b的派生類,則類c也是類a的派生類;類b稱為類a 的直接派生類,類c稱為類a的間接派生類;類a是類b的直接基類,是類 c的間接基類。
在多級派生的情況下,各成員的訪問屬性仍按以上原則確定。
為了把多重繼承說的更加詳細,請大家先看下面的幾個繼承的類。
[例] 如果宣告了以下的類:
class a //基類
;class b: public a //public方式
;class c: protected b //protected方式
;類a是類b的公用基類,類b是類c的保護基類。各成員在不同類中的訪問屬性如下:
根據以上分析,在派生類c的外面只能訪問類c的成員函式f5,不能訪問其他成員。 派生類c的成員函式f5能訪問基類a的成員i、f2、j和派生類b的成員f3、f4。派生類b 的成員函式f3、f4能訪問基類a的成員i、f2和j。
通過以上分析,可以看到:無論哪一種繼承方式,在派生類中是不能訪問基類的私有成員的,私有成員只能被本類的成員函式所訪問,畢竟派生類與基類不是同乙個類。
如果在多級派生時都採用公用繼承方式,那麼直到最後一級派生類都能訪問基類的公用成員和保護成員。
如果採用私有繼承方式,經過若干次派生之後,基類的所有的成員已經變成不可訪問的了。
如果採用保護繼承方式,在派生類外是無法訪問派生類中的任何成員的。
而且經過多次派生後,人們很難清楚地記住哪些成員可以訪問,哪些成員不能訪問,很容易出錯。因此,在實際中,常用的是公用繼承。
本文標題: 詳解c++程式設計中多級派生時的建構函式和訪問屬性
本文位址:
C 多層派生時的建構函式順序問題
在派生類物件的建立過程中,首先是虛基類的建構函式被呼叫,並按照他們宣告的順序來構造,第二批是非虛基類的建構函式按他們的宣告順序呼叫,第三批是成員物件的構造函式呼叫,最後是派生自己的建構函式被呼叫。乙個類不僅可以派生出乙個派生類,派生類還可以繼續派生,形成派生的層次結構。在上面敘述的基礎上,不難寫出在...
C 基類和派生類的建構函式(詳解)
基類的成員函式可以被繼承,可以通過派生類的物件訪問,但這僅僅指的是普通的成員函式,類的建構函式不能被繼承。建構函式不能被繼承是有道理的,因為即使繼承了,它的名字和派生類的名字也不一樣,不能成為派生類的建構函式,當然更不能成為普通的成員函式。在設計派生類時,對繼承過來的成員變數的初始化工作也要由派生類...
解析C 中多層派生時的建構函式及一些特殊形式
c 多層派生時的建構函式 乙個類不僅可以派生出乙個派生類,派生類還可以繼續派生,形成派生的層次結構。在上面敘述的基礎上,不難寫出在多級派生情況下派生類的建構函式。通過例下面的程式,讀者可以了解在多級派生情況下怎樣定義派生類的建構函式。相信大家完全可以自己看懂這個程式。例 多級派生情況下派生類的建構函...