C++中的using三個作用
阿新 • • 發佈:2020-08-14
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; }