贊助廠商

娛樂城推薦

首頁

刊登資訊

  • 刊登者:匿名
  • 時間:2021-06-03 00:00:08

尚未解答C/C++- 為何static_cast會產生新物件??

C/C++- 為何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):

0個答案 C/C++- 為何static_cast會產生新物件??

其他問題

友站連結