1. 程式人生 > 實用技巧 >C++中的using三個作用

C++中的using三個作用

1.using 名稱空間

C++為了減少全域性類和變數之間的衝突,引入名稱空間的概念,類和變數可以屬於某個名稱空間。

namespace tesseract { class className { }; } 在某個檔案中使用該名稱空間中的類有兩種方式: 方式一:tesseract::className classInstance; 方式二:using namespace tesseract; using tesseract::className;

2. using 定義新型別

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

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

3. 改變介面繼承許可權

繼承體系中,改變部分介面的繼承許可權。

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

#include <iostream>
#include <typeinfo>

using namespace std;

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

    void func1()
    {
        cout<<"func1"<<endl;
    }
    void func2()
    {
        cout<<"func2"<<endl;
    }
};

class ClassB:private ClassA
{
public:
    using ClassA::func1;//需要在ClassB的public下釋放才能對外使用,
    void dis2show()
    {
        this->func1();
    }
};

int main(int argc, char *argv[])
{

    ClassB clB;
    clB.func1();
    clB.dis2show();

    return 0;
}