1樓:匿名使用者
public公有繼承
private私有繼承
我們知道類的private和protected成員,在類外是不可以使用的.只有public成員可以在類外直接使用.
公有繼承時,基類的private成員派生類也不可用,基類的public和protected成員在派生類中可直接使用.繼承過來(變成派生類相應的public和protected成員)只有public成員在派生類外可以直接使用.
保護繼承時,基類的private成員仍為有私有.基類的public和protected成員變成派生類的protected成員,這時在派生類外也不能直接使用原基類的public成員
私有繼承時,基類的private成員仍為有私有.基類的public和protected成員將變成派生類的private成員.
舉個例子.
class a
;class b:public a
void setage(int nage)
void setmoney(int nmoney)
};b objb;//建立b類的物件objb
objb.m_ntelnum=123456;//可以
objb.m_nage=30;//錯誤.public繼承中基類的protected在派生類中是protected
objb.m_nmoney=100;//更錯誤,在派生類中都不可以直接使用.在類外就更不能了.
class c:protected a
void setage(int nage)
void setmoney(int nmoney)
};c objc;//建立c類的物件objc
objc.m_ntelnum=123456;//注意這裡和public的區別,這裡錯誤,m_ntelnum變成了c類的protected成員
objc.m_nage=30;//錯誤.protected繼承中基類的protected在派生類中是protected,這與public同相
objc.m_nmoney=100;//更錯誤,在派生類中都不可以直接使用.在類外就更不能了.
class d:private a
void setage(int nage)
void setmoney(int nmoney)
};d objd;//建立d類的物件objd
objd.m_ntelnum=123456;//錯誤,m_ntelnum變成了d類的private成員
objd.m_nage=30;//錯誤.private繼承中基類的protected在派生類中是private
objd.m_nmoney=100;//更錯誤,在派生類中都不可以直接使用.在類外就更不能了.
從例子來看,三種繼承從派生類內部引用來看好像沒有區別,只在類外引用時表現不同.現在還看不出public和protected繼承的區別
那再看一個例子.
class e:public b
void setage(int nage)
void setmoney(int nmoney)
};e obje;//
obje.m_ntelnum=123456;//可以
//其它的兩個就不能用了.
class f:public c
void setage(int nage)
void setmoney(int nmoney)
};f objf;
objf.m_ntel=123456;//錯誤,因為這是f的保護成員.注意與e類區別
class g:public d
void setage(int nage)
void setmoney(int nmoney)
};//那g在類外就沒有了可以引用的繼承過來成員了!
//這些繼承方式是很難理解的.最好的辦法就是多寫**去試.
c++類中public,private,protected的用法與區別。
2樓:匿名使用者
protected型別的訪問機制與private一樣
在基類的派生類中,可以直接訪問繼承而來的protected成員,但是不能訪問private限制的成員.所以在派生類中,可以訪問基類繼承而來的public和proected兩種型別的成員.
在public公有派生下,繼承而來的成員訪問許可權不變.protected派生下,public和protected都變成protected,private派生下,所有的繼承下來都是private了
3樓:巴霞姝雍滌
在本類中,protected與private是相同的,但protected可以被繼承,而private卻不行。
只有公有成員才能在類的外部訪問。如classa;aca;ca.a
//error
ca.b
//ok
ca.c
//error
cb.c
//error。雖然c也是b的成員,但c在被繼承的時候變成私有或者受保護的成員了。
關於c++的class中的public,protected,private;
4樓:匿名使用者
public表明該資料成員、成bai員函式du是對所有使用者zhi開放的,所有用
戶都可dao以直接進行呼叫
private表示私有
專,私有的意屬思就是class內的可以直接用,別的都不可以直接使用,相當於私有財產,只能自己使用,除了自己,都不可以使用。
protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。
5、c++中繼承方式有哪幾種,各有什麼特點。 6、請描述c++中private和protected訪問的異同之處。
5樓:o默化
有三種繼
承方來式 public private protect ,源public繼承 除私有成員外的所有成員 都已public的身份出現 另外另種同理 但是都是 私有成員除外
private 和protect 的區別只有在二代繼承裡才會出現區別 private 繼承有些繼承不了 protect就都可以繼承
還是私有成員除外
c++中public、private和protected訪問屬性的區別
6樓:雲哥
在本類中,protected與private是相同的,但protected可以被繼承,而private卻不行。只有公有成員才能在類的外部訪問。版如class a;a ca;ca.
a //error
ca.b // ok
ca.c //error
cb.c //error。雖權然c也是b的成員,但c在被繼承的時候變成私有或者受保護的成員了。
c 中string陣列的問題,C 中string陣列的問題
string並不是c 的基本資料型別。它是標準庫裡宣告的一個字串類。所以樓主的答案是 可以。string str 10 定義一個字串陣列str顯示的是 i love you 還可以這樣定義字串陣列 string name 5 可以賦值啊。include include using namespace...
C中substring怎麼用的,c 中substring中怎麼擷取字串
c 中substring的用法是 public string substring int beginindex 用於返回一個新的字串,它是此字串的一個子字串。該子字串始於指定索引處的字元,一直到此字串索引末尾。在sqlserver資料庫中,用於擷取字串的某部分。sqlserver資料庫中用於擷取字串...
C中的this表示什麼意思,C中this是什麼意思
this是指bai向類或者結構體本身 du的指標,並且不可以改變。zhi this就是指向本身的dao類或結構體的專變數。如class a void fun int a cout c 中this是什麼意思?this指代的是當前上下文,this表示的物件,是這個方法活動的 上下文 所謂的 上下文 也就...