C 繼承的訪問規則

2021-07-04 00:27:00 字數 1239 閱讀 5513

通過基類的物件,就只能訪問該類的公有成員,派生類可以繼承基類中除了建構函式和析構函式之外的成員,但這些成員的訪問屬性在派生過程中是可以調整的。

基類的建構函式和析構函式不能被繼承

先看**: 這是乙個繼承的訪問規則的問題

下面**通過windows7下的dev c++的正常執行

#include

class base

void showx()

};class derived:private base

void showxy()

};int main(int argc,char *argv)

我的認識是:

基類的訪問屬性是private,例如base的x ,子類的繼承方式是private,那麼在子類中是否有這個private的成員變數或函式?

derived 從 base 那裡繼承了 void setx(int);和void showx();  那是否繼承 x 呢?

於是 derived 就變成了如下 (是否真的變成下面?)

class derived

void showx()

public:

void setxy(int n ,int m)

void showxy()

};還是變成了

class derived

void showx()

public:

void setxy(int n ,int m)

void showxy()

};

結論是:這個是正確的,繼承會繼承所有的父類的東西,只是訪問有限制而已的

這個時候問題來了:

在main中呼叫  obj.setxy(10,15)  會呼叫自己繼承來的 private  void setx(n),那麼這個10是賦給誰呢?

是賦給obj呢,還是怎麼樣,這個x從何而來呢?

在main中呼叫 obj.showxy(),也是會呼叫自己繼承來的 private  void showx(),問題同上,

這個x是誰的成員變數呢?

我覺得是obj的x,  但是書上只說不可以直接訪問,但可以通過基類的public函式間接訪問

最終結論:子類全部繼承 父類的所有(無論private,protected還是public)成員變數和成員函式,但是會有訪問的限制

C 基礎 繼承與派生 宣告 繼承方式 訪問規則

繼承是物件導向程式設計中的重要特性,是軟體復用的一種形式。其實繼承和派生就是同一種概念的不同說法罷了,通常我們說子類繼承父類,父類派生出子類。先講一下c 中派生與繼承的基本概念,它是之後學習派生類的構造與析構,以及多重繼承等的基礎。1.派生類的宣告 宣告乙個派生類的一般格式 class 派生類名 繼...

C 繼承機制 C 中的繼承符合下列規則

1 繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中的成員。object 類作為所有類的基類。2 派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去已經繼承的成員的定義。3 建構函式和析構函式不能被繼承。除此以外的其它成員,不論對它們定...

C 私有繼承訪問

環境 vs2010 問題 c 私有繼承在外部的訪問 include using namespace std class a public a a 0 cout int a class b protected a public b i 1 cout public int i int main void...