Re: 關於c++的繼承
※ 引述《jiannrong@kkcity.com.tw ( )》之銘言:
: 請教一下
: c++的繼承可以寫public/preotected/private
: 我的意思是class可以寫
: class Hobbit:public people
: class Hobbit:protected people
: class Hobbit:private people
: 而這些不同的繼承方式究竟會有什麼差別呢?
: 我有博碩的書 可是書本內沒有解釋這個
: 所以在此請教
: 謝謝
換一本書吧 這種東西是應該要解釋的 (不然就是你沒看到)
它們的差別大致如下
class base
{
public:
int base_pub;
private:
int base_priv;
protected:
int base_prot;
};
class pubDer: public base
{
void f()
{
base_pub=0; //OK, 它還是public
base_priv=0; //error, 因為它是private
base_prot=0; //OK, 它還是protected
}
};
class privDer: private base
{
void f()
{
base_pub=0; //OK, 但它變成private
base_priv=0; //error
base_prot=0; //OK, 它也變成private
}
};
class privDer2: public privDer
{
void g()
{
base_pub=0; //error, 因為在privDer中它是private
base_prot=0; //error, 同上
}
};
class protDer: protected base
{
void f()
{
base_pub=0; //OK, 但它變成protected
base_priv=0; //error
base_prot=0; //OK, 它還是protected
}
};
class protDer2: public protDer
{
void g()
{
base_pub=0; //OK, 因為在protDer中它是protected
base_prot=0; //OK, 同上
}
};
int main(void)
{
pubDer pubd;
privDer privd;
protDer protd;
pubd.base_pub=0; //OK, 因為它是public
privd.base_pub=0; //error, 因為它是private
protd.base_pub=0; //error, 因為它是protected
return 0;
}
--
有人喜歡邊玩遊戲邊上逼;
也有人喜歡邊聽歌邊打字。
但是,我有個請求,
選字的時候請專心好嗎?
-- 改編自「古 火田 任三郎」之開場白
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.116
推
06/18 06:57, , 1F
06/18 06:57, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):