C++關鍵字之using的的用法總結

1)配合命名空間,對命名空間權限進行管理

using namespace std;//釋放整個命名空間到當前作用域
using std::cout;    //釋放某個變量到當前作用域

2)類型重命名

作用等同typedef,但是邏輯上更直觀。

 

#include <iostream>

using namespace std;

#define DString std::string    //! 不建議使用!

typedef std::string TString;   //! 使用typedef的方式

using Ustring = std::string;   //! 使用 using typeName_self = stdtypename;

//更直觀
typedef void (tFunc*)(void);
using uFunc = void(*)(void);

int main(int argc, char *argv[])
{
    TString ts("String!");
    Ustring us("Ustring!");    
    string s("sdfdfsd");

    cout<<ts<<endl;
    cout<<us<<endl;
    cout<<s<<endl;
    return 0;
}

3)繼承體系中,改變部分接口的繼承權限。

有這樣一種應用場景,比如我們需要私有繼承一個基類,然後又想將基類中的某些public接口在子類對象實例化後對外開放直接使用。如下即可

 

#include <iostream>
//#include <array>
#include <typeinfo>

using namespace std;

class Base
{
public:
    Base(){}
    ~Base(){}

    void dis1()
    {
        cout<<"dis1"<<endl;
    }
    void dis2()
    {
        cout<<"dis2"<<endl;
    }
};

class BaseA:private Base
{
public:
    using Base::dis1;//需要在BaseA的public下釋放才能對外使用
    void dis2show()
    {
        this->dis2();
    }
};

int main(int argc, char *argv[])
{
    BaseA ba;
    ba.dis1();
    ba.dis2show();

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章