C 中using 的使用

2022-06-13 15:24:10 字數 1641 閱讀 4370

#include using

namespace

std;

class

classone

;class

classtwo

;template

class classthree : private

classtype

;void

main()

在上面**中,一共有三處使用了using,分別是第3,16,22行,它們的作用為:

指定命名空間是c++using namespace中最常被用到的地方,在第3行中的:

using

namespace std;

using的另乙個作用是指定別名,一般都是using a = b;這樣的形式出現,比如在13行中:

using moduletype = classone;
moduletypeclassone的乙個別名。

using這個作用也比較常見,比如在vector.h中就有:

template>class vector: public _vector_alloc<_vec_base_types<_ty, _alloc>>

value_type_ty的乙個別名, value_type a;  和 _ty a; 是同樣的效果。

using的第三個作用是子類中引用基類的成員,一般都是using cbase::a;這樣的形式出現,比如在22行中:

using typename classtype::moduletype;
它和一般形式有些區別,就是它加了個typename修飾,這是因為類classthree本身是個模板類,它的基類classtype是個模板,這個typenameusing其實沒有什麼關係。如果classtype不是模板的話,這行**就可以寫成:

using classtype::moduletype;
剩下的就是using的作用,它引用了基類中的成員moduletypemoduletype又是類classone的別名,所以後面moduletype m;相當於定義物件m,對於子類成員m來說,這樣的效果和下面是相同的:

typename classtype::moduletype m;
不同之處在於using還修改了基類成員的訪問許可權,子類classthree私有繼承classtype,所以classtype中共有成員moduletype在子類classthree是私有的,它不能被外部訪問。但是使用using後,在main()函式中可以使用。

C 中using的使用方法

每乙個c 程式設計師最熟悉的乙個關鍵字恐怕就是using了,因為在程式中引用命名空間就是使用的using關鍵字,但是有些初學者剛開始對using關鍵字的認識也就侷限於引用命名空間上了。其實,using的用法並非如此的單一,我將自己對using的認識寫在下面,歡迎補充,更正。using關鍵字有兩個重要...

c 11中using的使用

這種用法估計使用最多的,為了防止定義變數名 函式名衝突,把它們定義在乙個命名空間內,使用的時候需要進行命名空間的申明 using namespace std 就不過多講解。using 還可以指定別名,比如using so3d so3 那麼它和typedef 有什麼區別?template int op...

C 中using的作用

1.在當前檔案中引入命名空間 這是我們最熟悉的用法,例如 using namespace std 2.在子類中使用 using 宣告引入基類成員名稱 參見c primer 在private或者protected繼承時,基類成員的訪問級別在派生類中更受限 class base protected st...