C 類中的typedef型別名要特殊處理

2021-06-28 18:53:12 字數 390 閱讀 8838

一般來說,內層作用域可以重新定義外層作用域中的名字,即使該名字已經在內層作用域中使用過。然而在類中,如果成員使用了外層作用域中的某個名字,而該名字代表一種型別,則類不能在之後重新定義該名字。

typedef double money;

class account //使用外層作用域的money

private:

typedef double money;  //錯誤:不能重新定義money

money bal;

//... };

需要特別注意的是,即使account中定義的money型別與外層作用域一致,上述**仍然是錯誤的。

儘管重新定義型別名字是一種錯誤的行為,但是編譯器並不對此負責。一些編譯器仍將順利通過這樣的**,而忽略**有錯的實事。

C 中typedef的用法

ypedef的四個用途和兩個陷阱 用途一 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如 char pa,pb 這多數不符合我們的意圖,它只宣告了乙個指向字元變數的指標,和乙個字元變數 以下則可行 typedef char pchar 一般用大寫 pchar pa...

C 類中的成員型別

這三種型別才成員的區別在於,對於本類來說 公有成員,外部可以訪問的成員。私有成員,外部不可以訪問的成員。保護成員,外部不可以訪問的成員。乍看起來,私有成員與保護成員的訪問許可權是相同的,使用私有成員就行了,貌似沒有必要再多出來乙個保護成員。實際上,保護成員與私有成員的區別體現在繼承上。繼承分為 公有...

C 中結構型別和類型別

c 中結構型別和類型別在語法上非常相似,他們都是一種資料結構,都可以包括資料成員和方法成員。結構和類的區別 1 結構是值型別,它在棧中分配空間 而類是引用型別,它在堆中分配空間,棧中儲存的只是引用。2 結構型別直接儲存成員資料,讓其他類的資料位於對中,位於棧中的變數儲存的是指向堆中資料物件的引用。c...