問題 C 子類能否訪問父類私有成員變數?

2021-09-29 23:33:36 字數 821 閱讀 4697

在此之前,需要先了解下c++的繼承機制。

計算子類物件大小時,也將父類私有成員變數所佔大小計算在內,也就是說,子類繼承父類時,也將父類私有成員變數繼承了過來,只是對子類不可見,不可操作。

可以做乙個實驗進行檢驗:

#pragma once

class fclass

;#include "fclass.h"

fclass::fclass()

fclass::~fclass()

int fclass::getvalue()

void fclass::setvalue(int a)

#pragma once

#include "fclass.h"

class cclass : public fclass

;#include "cclass.h"

cclass::cclass()

cclass::~cclass()

#pragma once

#include #include "cclass.h"

fclass f;

cclass c;

int main()

執行結果如下:

以上證明:c++中,父類存在共有或保護函式對其私有成員變數進行操作時,子類可繼承其函式對同樣繼承自父類的私有成員變數進行操作。

結論:父類共有函式操作私有成員,子類繼承後,繼承的共有函式可訪問和操作隱藏的、繼承自父類的私有成員變數。

c 父類的私有成員能否繼承

1.子類可以間接訪問父類私有成員 父類的私有成員函式和私有成員變數一樣,只有該類內部的其他成員函式可以呼叫,對外是封蔽的。子類繼承了父類的共有函式,且父類的公有函式呼叫了其內部的私有函式,此時子類呼叫父類的公有函式便能訪問父類的私有成員函式了。include using namespace std ...

C 中訪問私有成員

首先我必須承認訪問乙個類的私有成員不是什麼好做法。大家也都知道私有成員在外部是不能被訪問的。而乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員訪問,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有...

C 中訪問私有成員

首先訪問乙個類的私有成員不是什麼好做法。大家都知道私有成員在外部是不能被訪問的。乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員造訪,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有時候,源 是別...