在此之前,需要先了解下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 但是有時候,源 是別...