typedef和typename關鍵字

2022-09-04 12:27:15 字數 805 閱讀 6583

1、型別說明typedef

型別說明的格式為:

typedef  型別 定義名;

型別說明只定義了乙個資料型別的新名字而不是定義一種新的資料型別。定義名表示這個型別的新名字。只是個別名而已。

例如: 用下面語句定義整型數的新名字:

1 typedef int type_int;

使用說明後, type_int就成為int的同義詞了, 此時可以用type_int定義整型變數。

例如:  type_intm, n;(與int m, n等效)。

typedef同樣可用來說明結構、聯合以及列舉和類。就不一一舉例了。

2、型別解釋typename

typename關鍵字告訴了編譯器把乙個特殊的名字解釋成乙個型別,在下列情況下必須對乙個name使用typename關鍵字:

1.  乙個唯一的name(可以作為型別理解),它巢狀在另乙個型別中的。

2.  依賴於乙個模板引數,就是說:模板引數在某種程度上包含這個name。當模板引數使編譯器在指認乙個型別時產生了誤解。

比如如下**:

1 template int count(const c&v,t val)211

12return

n;13 }

保險起見,你應該在所有編譯器可能錯把乙個type當成乙個變數的地方使用typename。就像上面那個例子中的typename c::const_iterator,因為我們使用了typename,所以編譯器就知道了它是乙個型別,可以用來宣告並建立例項。

typedef和typedef struct的區別

今天做的專案中,看師兄寫的 有typedef struct,可是自己之前一直都不是特別了解這個是具體代表什麼意思,因為平時很少習慣用這個,一般都是直接就宣告類了,所以上網查了下,現在有所明朗了。分三塊來講述 1 首先 在c中定義乙個結構體型別要用typedef typedef struct stud...

結構體和typedef

一 使用結構的乙個優點就是 可以使用簡單的賦值語句在同型別的結構之間複製資訊 first second first.x second.x first.y second.y 二 structlist 注意這個分號不能少 structlistlist1,list2 注意這個分號不能少 structlis...

Typedef和define的區別

typedef和define都可以用來給物件取乙個別名,但是兩者卻有著很大不同。1 首先,二者執行時間不同 關鍵字typedef在編譯階段有效,由於是在編譯階段,因此typedef有型別檢查的功能。define則是巨集定義,發生在預處理階段,也就是編譯之前,它只進行簡單而機械的字串替換,而不進行任何...