-
私有繼承
鎖定
- 中文名
- 私有繼承
- 外文名
- private
- 領 域
- C++編程語言
- 派生類
- 私有派生類
- 基 類
- 私有基類
私有繼承具體介紹
私有基類的公用成員和保護成員在私有派生類中的訪問屬性相當於派生類中的私有成員,即派生類的成員函數能訪問它們,而在派生類外不能訪問它們。私有基類的私有成員在派生類中稱為不可訪問的成員,只有基類的成員函數可以引用它們,一個基類成員在基類中的訪問屬性和在私有派生類中的訪問屬性可能是不相同的。私有基類的成員在私有派生類中的訪問屬性見下表:
私有基類中的成員 | 在私有派生類中的訪問屬性 |
私有成員 公用成員 保護成員 | 不可訪問 私有 私有 |
例:
class Student1: private Student
{public:
void display_1()
{ cout<<"age:"<<age<<endl;
cout<<"address:"<<addr<<endl;
private:
int age;
string addr;
};
私有繼承私有繼承作用
看似沒有任何意義,但私有繼承可以幫助我們複用基類代碼,並防止基類接口的曝光。
看下面一個例子:
#include <iostream>
using std::cout;
using std::endl;
class engine {
public :
void start() {cout << "engine->start" << endl;}
void move() {cout << "engine->move" << endl;}
void stop() {cout << "engine->stop" << endl;}
};
class wheel {
public :
void start() {cout << "wheel->start" << endl;}
void move() {cout << "wheel->move" << endl;}
void stop() {cout << "wheel->stop" << endl;}
};
class car : private engine, private wheel {
public :
void start();
void move();
void stop();
};
void car::start() {
engine::start();
wheel::start();
}
void car::move() {
engine::move();
wheel::move();
}
void car::stop() {
engine::stop();
wheel::stop();
}
int main(int argc, char* argv[]) {
car ca;
ca.start();
ca.move();
ca.stop();
return 0;
}
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:12次歷史版本
- 最近更新: 践踏游戏