基類對象可以訪問派生類的成員
⑴ c#中基類如何訪問派生類的對象
將派生類在父類裡面聲明為友元類就可以訪問
否則無法訪問
可參考以下代碼
// 以下代碼在VC2008下測試通過
#include <iostream>
using namespace std;
class TT;
class Base
{
public:
Base(int d) : data(d)
{
}
private:
int data;
friend class TT;
};
class TT : public Base
{
public:
TT(int d) : Base(d)
{
}
int getData() const { return data; }
};
void main(void)
{
TT t(3);
cout << t.getData() << endl;
cin.get();
}
⑵ c++里基類的指針, 能訪問派生類的成員變數嗎
360問答
指向派生類的基類指針可不可以調用派生類成員函數?
軍8786050 LV12
2017-01-18
如果可以,怎麼訪問,如果不可以有什麼解決辦法?
滿意答案
liqi26zc
LV6
2017-01-19
可以,只要那個派生類成員函數是基類的成員函數的一個重寫版本
以C++為例,假如有
class Runnable {
virtual void run();
};
class myclass : Runnable {
virtual void run() { throw runtime_error("unimplemented"); }
};
並且有
myclass o;
Runnable* p = &o;
那麼 p->run() 就調用了派生類的 run 函數
⑶ 派生類的成員函數可以直接訪問基類的 成員,不能直接訪問基類的 成員
protect
保護成員在派生類中會變成
私有成員,派生類的成員函數是可以訪問的。
private
私有成員在派生類中是不可訪問成員,必須通過基類的成員函數訪問