C 中深入理解dynamic cast

2022-05-04 18:12:11 字數 857 閱讀 8225

**:

dynamic_cast運算子的主要用途:將基類的指標或引用安全地轉換成派生類的指標或引用,

並用派生類的指標或引用呼叫非虛函式。如果是基類指標或引用呼叫的是虛函式無需轉換就能在執行時呼叫派生類的虛函式。

前提條件:當我們將dynamic_cast用於某種型別的指標或引用時,只有該型別至少含有虛函式時(最簡單是基類析構函式為虛函式),才能進行這種轉換。否則,編譯器會報錯。

用個例子來說明:

1.基類中沒有虛函式:

#ifndef _class_h_

#define _class_h_

class

base

;class inherit :public

base

;#endif

#include "

class.h

"#include

base::base()

base::~base()

void

base::print()

inherit::inherit()

inherit::~inherit()

void

inherit::show()

#include "

class.h

"int

main()

編譯器報錯:

我們改基類

class

base

;

#include "

class.h

"int

main()

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

C 中深入理解dynamic cast

一 指標型別的dynamic cast 如果一條dynamic cast語句的轉換目標是指標型別並且轉換失敗了,會返回乙個空指標,則判斷條件為0,即為false 如果轉換成功,指標為非空,則判斷條件為非零,即true。這樣做可以確保型別轉換和條件檢查在同一條表示式中完成 if derived pd ...