using關鍵字的作用

2022-07-31 02:54:12 字數 1465 閱讀 3347

1. 通常using關鍵字用來宣告當前檔案的命名空間,比如宣告標準庫的命名空間std:

using namespace std;
但是在c++11中,還有其他的用處

2.給變數定義別名

用法例如:

using unit = unsigned int;
使用型別別名unit代替unsigned int

3.在子類中使用using宣告引入基類成員名稱

解除因繼承導致的成員保護或私有化限制,將基類成員引入到派生類的相應訪問控制區域內,便可按照相應規則訪問該基成員;

#include using namespace std;

class base

};class derived: private base // 第9行

};int main()

// 注釋掉第9行結果:base::foo

// 不注釋掉第9行結果:derived::foo

/*在private或者protected繼承時,基類成員的訪問級別在派生類中受限:

在這一繼承層次中,成員函式foo在base中為public,但在derived中為private。為了使它在derived中成為public,可以在derived的public

部分增加乙個using宣告。改變derived的定義,可以使foo成員能夠被使用者訪問

*/

派生類欲過載基類成員(正常情況下,基類函式會被重寫,如果派生類需要過載需要為每個派生類重寫基類函式);

#include using namespace std;

class base

void foo(char a)

};class derive : public base

};int main()

// 如果注釋掉第9行,則第18行會報錯

// 結果 base::foo_float

/*如果基類中成員函式有多個過載版本,派生類可以重定義所繼承的0個或多個版本,

但是通過派生型別只能訪問派生類中重定義的那些版本,所以如果派生類想通過自身型別使用所有的過載版本,

則派生類必須要麼重定義所有過載版本,要麼乙個也不重定義。

有時類只想重定義乙個版本,並且還想繼承其他過載版本,此種情況可以在派生類中為過載成員名稱提供using宣告,

使派生類不用重定義所繼承的每乙個基類版本,就可以訪問基類中所有過載版本。

*/

「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

1、如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)

2、如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)

C 中using關鍵字的作用

c 中using有兩種作用。1 作為指令,用於引用命名空間的,如using system.io 2 作為語句,using定義乙個範圍,在退出using之後,在此範圍末尾之後便自動釋放物件,起到了自動釋放資源的作用。如下面筆者使用streamwriter列的writeline方法先向指定文字檔案寫入資...

using關鍵字的用途

1 引用命名空間 2 為命名空間或型別建立別名 3 使用using語句 1 引用命名空間,這樣可以在程式中引用命名空間的型別而不必指定詳細的命名空間.a 比如在程式中常用的using system.text b 引用命名空間,並不等於編譯器編譯時載入該命名空間所在的程式集,程式集的載入決定於程式中對...

不可小瞧的using關鍵字

emlpoyee.cs類 public class employee idisposable 使用using語句需要注意的幾點 3.1 物件必須實現idisposeable介面,這個已經說過,如果沒有實現編譯器會報錯誤。如 using string strmsg my test 3.2 第二個usi...