[問題] 為何static_cast會產生新物件??
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
最近看書,不懂為何子類別static_cast成父類別
會產生一個新的暫時父類別??
我不是很懂為何要特別產生一個新的B??用原始d1的父類別B去操作感覺也沒問題阿?
謝謝
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://pastebin.com/embed_js/is7CQ0p5?theme=dark
#include <iostream>
using namespace std;
class B{
private:
int b;
public:
B(){b = 0x1234;}
virtual void set(int t){b = t;}
virtual void get(){cout << "0x" << hex << b << "\n";}
};
class D : public B{
private:
int d;
public:
D(){d = 0x5678;}
};
int main(){
D d1;
D *ptr = &d1;
static_cast<B>(*ptr).set(100);//產生一個新的B去set
ptr->get();
}
補充說明(Supplement):
※ 編輯: WangDaMing (110.26.33.194 臺灣), 02/15/2021 00:30:39
推
02/15 00:53,
4年前
, 1F
02/15 00:53, 1F
→
02/15 00:53,
4年前
, 2F
02/15 00:53, 2F
→
02/15 00:54,
4年前
, 3F
02/15 00:54, 3F
→
02/15 10:21,
4年前
, 4F
02/15 10:21, 4F
→
02/15 10:21,
4年前
, 5F
02/15 10:21, 5F
→
02/15 10:21,
4年前
, 6F
02/15 10:21, 6F
推
02/17 08:38,
4年前
, 7F
02/17 08:38, 7F
推
02/17 08:41,
4年前
, 8F
02/17 08:41, 8F
→
02/17 08:41,
4年前
, 9F
02/17 08:41, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章