如果沒有繼承,類只是具有一些相關行為的資料結構,這只是對過程語言的一大改進,而繼承則開闢了完全不同的新天地。通過繼承,可以在已有類的基礎上建立新類。這樣,類就成為可重用和可擴充套件的元件。博主的《漫談繼承技術》系列博文將講述各種利用繼承功能的方法。學習繼承的語法,和利用繼承的一些複製技術。本篇博文先給大家介紹一下typeid在繼承中的使用,希望對大家加深對繼承技術的理解有一定的幫助。
typeid是c++的乙個關鍵字,用它可以獲得乙個類的相關資訊。
它有兩種語法形式:
typeid(表示式); 或
typeid(型別說明符);
通過typeid得到的是乙個type_info型別的const引用。type_info是c++標準庫中的乙個類,專用於表示執行時型別資訊,它定義在typeinfo標頭檔案中。type_info類有乙個名為name的函式,用來獲得型別的名稱。
雖然typeid可以作用於任何型別的表示式,但只有它作用於多型型別的表示式時,進行的才是執行時型別識別,否則只是簡單的靜態型別資訊的獲取。咱們舉個栗子吧。
#include
using
namespacestd;
class
super
virtual
voidfun(int nvalue); };
void
super::fun(int
nvalue)
//sub
類繼承super
類class
sub: public
super
virtual
voidfun(int dvalue) override; };
void
sub::fun(int
dvalue)
int main(int
argc,char**argv)
程式執行結果:
psp是指標,指標本身不具有多型型別,是什麼型別的指標就輸出什麼型別的資訊。而*psp得到的是psp指標所指向物件的具體型別(具有多型型別),輸出的是所指向物件的型別資訊,即class sub。ref引用了派生類物件,也屬於多型型別。string是c++內建型別,其實string是std::basic_string模板類的例項,我們上次在 一文中總結了字串的用法,如果遺忘了,那就回去再回顧一下吧。
注意:指標本身不具有多型型別,指標所指向的物件具有多型型別。
Nginx 變數漫談(四)
在設定了 取處理程式 的情況下,nginx 變數也可以選擇將其值容器用作快取,這樣在多次讀取變數的時候,就只需要呼叫 取處理程式 計算一次。我們下面就來看乙個這樣的例子 map args foo server 這裡首次用到了標準 ngx map 模組的 map 配置指令,我們有必要在此介紹一下。ma...
模式識別技術漫談(1)
模式識別技術漫談 1 引言 在人工智慧技術 artificial intelligence 領域中,模式識別 pattern recognition 技術也許是最具有挑戰性的一門技術了,模式識別有時又被稱為分類技術,因為模式識別說到底就是對資料進行分類。說到識別,最為常用的便是模仿人的視覺的影象識別...
程式設計漫談(四) 基本功
讀 程式設計珠璣i 有感 program.program better.program faster.要從事軟體開發,首先要學會程式設計。如何程式設計呢?如何編寫更高效更優雅的程式呢?程式設計珠璣 通過簡單而熟悉的示例,揭示了許多非常有益的程式設計原理和技巧,極具啟發性。基本流程 問題定義 應用框架...