代码改变世界

C++中的using三个作用

2020-08-14 15:55  宋海宾  阅读(604)  评论(0编辑  收藏  举报

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;
}
复制代码