[問題] C++ Primer 4ed中文版的p579頁...
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
vc
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
none
問題(Question):
C++ Primer 4ed中文版的page579
討論derived-to base轉換的可用性
在有一個鑰匙的框框裡面強調:可考慮base class的public成員是否可存取
如果上面這句話是對的
就會有一個結論:
public繼承-->可以做derived-to-base轉換
protected繼承-->可以做derived-to-base轉換
private繼承-->不能做derived-to-base轉換
但是下面又有一句話說:
如果繼承關係是private或protected,就不能做derived-to-base轉換
所以我用以下的code驗證,似乎下面這句話是對的...
#include <iostream>
#include <string>
using namespace std;
class B
{
public: int Bdata;
};
class D1 :public B
{
};
class D2 : protected B
{
};
class D3 : private B
{
};
int main()
{
D1 d1;
D2 d2;
D3 d3;
B b1= (B)d1;
B b2= (B)d2; //error C2243
B b3= (B)d3; //error C2243
return 0;
}
那上面那個鑰匙的框到底在講甚麼啊?以下是課本的摘錄
"若想判斷是否可轉換至base,可考慮base class的public成員可否存取。
如果可以,轉換便可進行;否則無法進行"
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.226.60
推
08/05 13:11, , 1F
08/05 13:11, 1F
→
08/05 13:12, , 2F
08/05 13:12, 2F
※ 編輯: easterday 來自: 114.40.129.37 (08/05 14:49)
→
08/05 14:54, , 3F
08/05 14:54, 3F
→
08/05 14:55, , 4F
08/05 14:55, 4F
→
08/05 15:37, , 5F
08/05 15:37, 5F
→
08/05 15:38, , 6F
08/05 15:38, 6F
→
08/05 15:38, , 7F
08/05 15:38, 7F
→
08/05 15:41, , 8F
08/05 15:41, 8F
→
08/05 15:42, , 9F
08/05 15:42, 9F
推
08/05 19:29, , 10F
08/05 19:29, 10F
→
08/05 19:30, , 11F
08/05 19:30, 11F
→
08/05 19:31, , 12F
08/05 19:31, 12F
→
08/05 19:32, , 13F
08/05 19:32, 13F
→
08/05 19:33, , 14F
08/05 19:33, 14F
→
08/07 10:24, , 15F
08/07 10:24, 15F
→
08/07 10:45, , 16F
08/07 10:45, 16F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章