#include usingnamespace
std;
class
classone
;class
classtwo
;template
class classthree : private
classtype
;void
main()
在上面**中,一共有三處使用了using
,分別是第3,16,22行,它們的作用為:
指定命名空間是c++using namespace
中最常被用到的地方,在第3行中的:
usingnamespace std;
using
的另乙個作用是指定別名,一般都是using a = b;
這樣的形式出現,比如在13行中:
using moduletype = classone;
moduletype
是classone
的乙個別名。
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
是個模板,這個typename
和using
其實沒有什麼關係。如果classtype
不是模板的話,這行**就可以寫成:
using classtype::moduletype;剩下的就是using的作用,它引用了基類中的成員
moduletype
,moduletype
又是類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...