作者Arashinoon (阿辣洗)
看板NTUE-CS102
标题[闲聊] 浅谈继承
时间Sat May 1 00:52:11 2010
说好是浅谈了
给阿泰看看
在类别中(Class)
通常都会宣告几个成员(Menber)
而成员中如果在其他类别里面也重复出现
其实可以让他们做一个 继承动作 让这个成员可以不用重复宣告
EX 这次作业的 赌博游戏 扑克牌 骰子
他们都有一个共同的成员 积分(Score)
-
如果要把他们个别宣告就会重复三次
Class gamble Class poker Class dice
{ { {
int score; int score; int score;
public: public: public:
void sets(int Score) void sets(int Score) void sets(int Score)
{ { {
score = Score; score = Score; score = Score;
} } }
.. .. ..
.... .... ....
} } }
像这样 都会用到 set get函式 还有 score 成员
何不让他们成为一种继承关系 让他们可以共用同一个宣告
-
继承关系又分三种
老爸宣告的成员
public protected private
↓儿子依照继承方式不同 继承的状况
public public protected 无法直接存取
protected protected protected 无法直接存取
private private private 无法直接存取
这课本里都有
顺便在这边复习一下类别内 成员的宣告 与存取权限的这个部份
public : 类别内、类别外(主程式、函式等)皆可存取变更
protected : 类别内可存取变更、类别外不可
private : 类别内可存取变更、类别外不可
-
在这边解释一下 类别内外的意思
当你读取这个成员的时候
是看呼叫的地方 是在类别内 还是 类别外
如果在 int main() 里面呼叫 private 就是类别外了
这时候无法存取
如果在 class : sets() 里面呼叫 private 就是在类别内
此时可以存取 变更
另外
继承的时候 为何父类别的 private 成员 无法直接存取呢 ?
-
┌───────┐
│ 儿 ┌───┤
│ │老 │
│ 子 │ 爸 │
└───┴───┘
继承的时候 如果有去列印出他们两个的空间大小
就会发现 宣告儿子类别的时候
除了儿子内的成员外 会再加上老爸的成员空间
因此儿子想要直接读取在老爸类别内的 private 成员是不可行的
只能利用在老爸 public 的设定函式、回传函式来进行存取变更
大概就这样 都说是浅谈了没讲很深 有错请指正
-
--
标题: Re: [公告]面对一下
威葛格表示:我崩溃了...
1F:推 WAYS22275:所以PO这篇文章让你觉得? 04/01 14:54
2F:推 WAYS22275:新奇 温馨 夸张 难过 实用 高兴 无聊 生气 伯温 04/01 15:00
3F:推 brightevil:伯温>///< 04/01 16:12
4F:推 t3603129:= = 04/01 17:08
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.127.36.135
5F:推 gcobc12632:ㄎ 05/01 00:54
6F:→ Arashinoon:阿泰有没有懂一点阿 我跟你同本的 你应该知道 05/01 00:55
7F:推 j2612280:Good~ 05/01 00:55
8F:推 ip3311:干嘛谦虚说浅谈XD 就直接说 [影片]阿辣洗嫩教C++ 05/01 00:59
9F:→ Arashinoon:哪来影片 ㄍㄟ校 05/01 01:00
10F:推 ip3311:做成PTT动画呀 啾咪^.< 保证会被推爆 05/01 01:03
11F:推 gcobc12632:阿辣表示: 05/01 01:03
12F:推 j2612280: 小case!! 05/01 01:10
13F:→ s86186654418:member 05/01 16:20