最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中using的三種用法舉例詳解

 更新時間:2023年02月03日 10:56:23   作者:wuqiongjin  
最近在使用中,發(fā)現(xiàn)了一種以前沒學(xué)過的using用法,于是在這里,將using的幾種用法總結(jié)一下,下面這篇文章主要給大家介紹了關(guān)于C++中using的三種用法,需要的朋友可以參考下

1. using聲明(引入單個名稱)

using聲明是將命名空間中某個名字單獨引入到當(dāng)前作用域。這使得我們在當(dāng)前作用域下可以直接使用該名字而無需使用作用域限定符::。

using std::string;
string s = "123";

using聲明可以改變派生類對父類成員的訪問控制。

class Base{
protected:
    int bn1;
    int bn2;
};
 
class Derived: private Base{	//私有繼承
public:
    using Base::bn1;	//在當(dāng)前作用域中引入了父類的保護成員, 在當(dāng)前作用域中可以訪問
};
 
class DerivedAgain: public Derived{	//在Derived的子類中仍然可以訪問bn1
};
 
int main(){
    Derived d;
    DerivedAgain da; 
    d.bn1 = 1;
    d.bn2 = 2;   //error, 'bn2' is a private member of 'Base'
    da.bn1 = 3;  //ok
    std::cout<<d.bn1<<std::endl;
    return 0;
}

盡管Derived是Base的私有繼承,但是通過using聲明父類的成員,我們就可以在Derived類以及其后續(xù)派生類中使用了。

2. using指示(引入命名空間)

using指示就是將一個命名空間中的所有名字全部引入到當(dāng)前作用域(將命名空間在當(dāng)前作用域展開)。可能會存在命名沖突的問題。

using namespace std;	//我們常用的std命名空間展開

3. 類型重定義(替代typedef)

語法:

using alias = typename;//使用別名去替代原始類型(重命名)

在C++11中,我們可以使用這樣的語法來替代typedef的功能了。

using ULL = unsigned long long;		//typedef unsigned long long ULL;
using func = void(*)(int, int);		//typedef void(*func)(int, int);

在Effective Modern C++中的條款9說明了, 使用using替代typedef

typedef存在一些限制。

當(dāng)我們想實現(xiàn)一個這樣的模板: 將一個int映射到任意類型的模板。類似于下面的功能:

typedef std::map<int, int> mapIntInt;
typedef std::map<int, bool> mapIntBool;
typedef std::map<int, std::string> mapIntString;
//...

在C++98/03中,我們必須這樣寫才能實現(xiàn):

template <class Val>
struct mapInt{
    typedef std::map<int, Val> type;
};

int main(){
    mapInt<int>::type imap;		//將int映射到int的
    mapInt<bool>::type bmap;	//將int映射到bool的
    mapInt<std::string>::type smap;	//將int映射到string的
    return 0;
}

在C++11中,我們可以直接使用using重定義模板

template <class Val>
using mapInt = std::map<int, Val>;

int main(){
    mapInt<int> imap;
    mapInt<bool> bmap;
    mapInt<std::string> smap;
    return 0;
}

總結(jié)

到此這篇關(guān)于C++中using的三種用法的文章就介紹到這了,更多相關(guān)C++ using用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

兴仁县| 通城县| 嘉峪关市| 潜山县| 巨野县| 会东县| 怀集县| 汪清县| 博爱县| 察隅县| 灵丘县| 礼泉县| 泰顺县| 天等县| 游戏| 湘乡市| 横山县| 海盐县| 新干县| 新化县| 全州县| 天祝| 江都市| 集安市| 长宁区| 安新县| 延庆县| 平罗县| 博客| 蒲城县| 射洪县| 榆社县| 沙田区| 金溪县| 永宁县| 修武县| 临夏市| 通城县| 子洲县| 诸暨市| 寿光市|