Re: 關於c++的繼承
※ 引述《LPH66.bbs@ptt.cc (ha(ruhi|yate)ism)》之銘言:
> ※ 引述《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;
> }
謝謝
等一下我會試試看你提供的程式碼
了解一下他到底怎麼跑
不過我先附上我寫的
我想了解是哪裡錯了
謝謝
請問以下的protected繼承為何會有錯誤呢
#include <iostream>
using namespace std;
class people
{
protected:
public:
void display(int);
void show();
int height;
};
void people::display(int xyz ){
height=xyz;
cout<<"高"<<height<<endl;
}
void people::show( ){
height=100;
cout<<"高"<<height<<endl;
}
class Hobbit:protected people
{
private:
int id;
public:
void show();
} ;
void Hobbit::show()
{
display(110);
id=1;
cout<<"id為"<<id<<endl;
}
int main()
{
people a;
Hobbit b;
cout <<"a\n";
a.display(160);
cout <<"\nb\n";
b.display(110); //這一行會有錯誤
b.show();
system("PAUSE");
return 0;
}
--
┌─────◆KKCITY◆─────┐▇─┐KKADSL→六星級優質連線服務
│ bbs.kkcity.com.tw │┴ └─▇ 馬上申請帶你上網環遊全世界!
└──《From:140.109.140.11 》──┘ KKADSL ┴ http://adsl.kkcity.com.tw
--
→
06/18 19:15, , 1F
06/18 19:15, 1F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):