[問題] C++的繼承

看板C_and_CPP (C/C++)作者時間16年前 (2009/11/21 00:00), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 有一個龐大的project, 需要修改裡面所有的CString::LoadString() 我不想要一個一個去修改... 想說在project中寫一個Class去繼承CString, 在將LoadString覆載成我所需要的 但是遇到了operator似乎沒有一起繼承的問題。 也就是說只要遇到 CString+CString或是類似的"+""-""=" compile就會出現錯誤 想請教一下, 這樣的做法是不是不恰當呢? 另外就是operator是不是沒有辦法繼承呢? 希望得到的正確結果: 觀念問題... 程式跑出來的錯誤結果:開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC2005 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.253.23

11/21 00:10, , 1F
friend function不會被繼承
11/21 00:10, 1F

11/21 00:13, , 2F
operator= 也不會被繼承
11/21 00:13, 2F

11/21 01:59, , 3F
operator=不是不會繼承 是會被hide掉..
11/21 01:59, 3F

11/21 01:59, , 4F
如果base class有ovardload operator=表示derived class
11/21 01:59, 4F

11/21 02:00, , 5F
即使你沒重定義operator= compiler也會幫你自動生一個
11/21 02:00, 5F

11/21 02:00, , 6F
所以會把base class的operator= hide掉
11/21 02:00, 6F

11/21 02:48, , 7F
這種狀況下用繼承去解恐怕最後也未必能達成你想要的目的。
11/21 02:48, 7F
文章代碼(AID): #1B1hqF9x (C_and_CPP)
文章代碼(AID): #1B1hqF9x (C_and_CPP)