1.在當前檔案中引入命名空間
這是我們最熟悉的用法,例如:using namespace std;
2.在子類中使用 using 宣告引入基類成員名稱(參見c++ primer)
在private或者protected繼承時,基類成員的訪問級別在派生類中更受限:
class base
protected:
std::size_t n;
};class derived : private base ;
在這一繼承層次中,成員函式 size 在 base 中為 public,但在 derived 中為 private。為了使 size 在 derived 中成為 public,可以在 derived 的 public
部分增加乙個 using 宣告。如下這樣改變 derived 的定義,可以使 size 成員能夠被使用者訪問,並使 n 能夠被 derived的派生類訪問:
class derived : private base ;
另外,當子類中的成員函式和基類同名時,子類中重定義的成員函式將隱藏基類中的版本,即使函式原型不同也是如此(隱藏條件見下面)。
如果基類中成員函式有多個過載版本,派生類可以重定義所繼承的0
個或多個版本,但是通過派生型別只能訪問派生類中重定義的那些版本,所以如果派生類想通過自身型別使用所有的過載版本,則派生類必須要麼重定義所有過載版本,要麼乙個也不重定義。有時類需要僅僅重定義乙個過載集中某些版本的行為,並且想要繼承其他版本的含義,在這種情況下,為了重定義需要特化的某個版本而不得不重定義每乙個基類版本,可能會令人厭煩。可以在派生類中為過載成員名稱提供 using 宣告(為基類成員函式名稱而作的 using 宣告將該函式的所有過載例項加到派生類的作用域),使派生類不用重定義所繼承的每乙個基類版本。乙個 using 宣告只能指定乙個名字,不能指定形參表,使用using宣告將名字加入作用域之後,派生類只需要重定義本型別確實必須定義的那些函式,對其他版本可以使用繼承的定義。
「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下:
1、如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)
2、如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)
#include "stdafx.h"
#include
using namespace std;
class base
;class derived : base
{public:
using base::menfcn;//using宣告只能指定乙個名字,不能帶形參表
int menfcn(int)
{ cout<< cout<<"derived function with int"<
C using用法總結
c using用法總結 1 配合命名空間,對命名空間許可權進行管理 using namespace std 釋放整個命名空間到當前作用域 using std cout 釋放某個變數到當前作用域2 型別重新命名 作用等同typedef,但是邏輯上更直觀。include using namespace ...
C using語句使用心得總結
c using語句用於定義乙個範圍,在此範圍的末尾將釋放物件,這樣的用法比較少見,常見於非託管資源。這些資源在使用後,就必須徹底釋放。1 作為指令,用於為命名空間建立別名或匯入其他命名空間中定義的型別。請參見 using 指令 2 作為c using語句,用於定義乙個範圍,在此範圍的末尾將釋放物件。...
C using關鍵字作用總結
1.在當前檔案中引入命名空間 這是我們最熟悉的用法,例如 using namespace std 2.在子類中使用 using 宣告引入基類成員名稱 參見c primer 在private或者protected繼承時,基類成員的訪問級別在派生類中更受限 class base protected st...