C++: using

C++中using關(guān)鍵字一般有三種用處:

1. 用于命名空間

用于引入定義于別處的名稱到此 using 聲明出現(xiàn)的聲明性區(qū)域阁簸,典型如:

using namespace std;

具體的用法可參見:命名空間

2. 用于類成員

using聲明引入基類成員到派生類定義恩沽,例如暴露基類的受保護(hù)成員為派生類的公開成員, 若名稱是基類的重載成員函數(shù)之名跃须,則引入帶該名稱的所有基類成員函數(shù)茵休。若派生類已有同名获讳、參數(shù)列表及限定的成員艰毒,則派生類成員隱藏或覆寫引入自基類的成員(不與之沖突)

#include <iostream>
struct B 
{
    virtual void f(int) { std::cout << "B::f\n"; }
    void g(char)        { std::cout << "B::g\n"; }
    void h(int)         { std::cout << "B::h\n"; }
 protected:
    int m; // B::m 為受保護(hù)
    typedef int value_type;
};

struct D : B 
{
    using B::m; // D::m 為公開
    using B::value_type; // D::value_type 為公開

    using B::f;
    void f(int) { std::cout << "D::f\n"; } // D::f(int) 覆寫 B::f(int)
    using B::g;
    void g(int) { std::cout << "D::g\n"; } // g(int) 與 g(char) 均作為 D 成員可見
    using B::h;
    void h(int) { std::cout << "D::h\n"; } // D::h(int) 隱藏 B::h(int)
};

int main()
{
    D d;
    B& b = d;

//    b.m = 2; // 錯(cuò)誤掉盅, B::m 受保護(hù)
    d.m = 1; // 受保護(hù)的 B::m 可作為公開的 D::m 訪問
    b.f(1); // 調(diào)用派生類 f()
    d.f(1); // 調(diào)用派生類 f()
    d.g(1); // 調(diào)用派生類 g(int)
    d.g('a'); // 調(diào)用基類 g(char)
    b.h(1); // 調(diào)用基類 h()
    d.h(1); // 調(diào)用派生類 h()
}

詳細(xì)可參考鏈接

3.用于類型別名和別名模版

3.1 用于類型別名

在此種情況下與typedef作用一致朝扼,其不引入新類型赃阀,且不能更改既存類型名的含義

3.2 用于別名模板

別名模板是特化時(shí)等價(jià)于以別名模板實(shí)參替換type-id 中形參的結(jié)果:

template<class T>
struct Alloc { };
template<class T>
using Vec = vector<T, Alloc<T>>; // type-id 為<T, Alloc<T>>
Vec<int> v; // Vec<int> 同 vector<int, Alloc<int>>

此種情況是typedef力不能及的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市擎颖,隨后出現(xiàn)的幾起案子榛斯,更是在濱河造成了極大的恐慌,老刑警劉巖搂捧,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驮俗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡允跑,警方通過查閱死者的電腦和手機(jī)王凑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聋丝,“玉大人索烹,你說我怎么就攤上這事∪跄溃” “怎么了百姓?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)每篷。 經(jīng)常有香客問我瓣戚,道長(zhǎng),這世上最難降的妖魔是什么焦读? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任子库,我火速辦了婚禮,結(jié)果婚禮上矗晃,老公的妹妹穿的比我還像新娘仑嗅。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布仓技。 她就那樣靜靜地躺著鸵贬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脖捻。 梳的紋絲不亂的頭發(fā)上阔逼,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音地沮,去河邊找鬼嗜浮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛摩疑,可吹牛的內(nèi)容都是我干的危融。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼雷袋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吉殃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楷怒,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤蛋勺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后率寡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迫卢,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年冶共,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乾蛤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捅僵,死狀恐怖家卖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庙楚,我是刑警寧澤上荡,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站馒闷,受9級(jí)特大地震影響酪捡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纳账,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一逛薇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疏虫,春花似錦永罚、人聲如沸啤呼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽官扣。三九已至,卻和暖如春羞福,著一層夾襖步出監(jiān)牢的瞬間惕蹄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工治专, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焊唬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓看靠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親液肌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挟炬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348