C 中的typedef typename 作用

2021-09-09 03:39:33 字數 416 閱讀 7890

今天在**裡看到了這樣一段**:

typedef typename refbase::weakref_type weakref_type;

起初一直搞不懂為什麼要加個typename,後來搜尋了一下才知道這個關鍵字是有目的的:

如果不加這個關鍵字,編譯器就不知道refbase::weakref_type到底是個什麼東西?可能是靜態成員變數,也有可能是靜態成員函式,也有可能是內部類。

加上這個關鍵字等於手動告訴編譯器:refbase::weakref_type 就是乙個型別。

例:

templateclass

a ;

template

class

b ;

intmain()

如果把注釋取消,就會產生編譯錯誤。

C 中的long與C 中的long

微軟很厲害,c 是非常優秀的計算機語言,c 比c 還厲害,c c 本身不就包含四個 號嗎?而微軟發明了c c 中的long比c 中的long要long兩倍!不信你看 我正在使用.net寫乙個預約排隊的程式,因為一前通過vc編寫了乙個用於顯示登記資訊的控制項,現在使用c 重新預約程式,則必然要呼叫vc...

c中的const與c 中的const

c中的const是乙個偽唯讀識別符號。include include int main 此時輸出a的值為20,被指標間接的改變了。c 中,const進行了增強,不在是乙個偽識別符號了。const int a 10 int p int a p 20 cout a p endl cout a endl ...

C 中的const 和C中的區別

c 中的const 一 和c中的區別 c 中的const正常情況下是看成編譯期的常量,編譯器並不為const分配空間,只是在編譯的時候將期值儲存在名字表中,並在適當的時候折合在 中.所以,以下 include using namespace std int main for int i 0 i si...