ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++中的using三个作用

2020-08-14 16:00:40  阅读:297  来源: 互联网

标签:void namespace clB ClassA 三个 C++ using tesseract


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

 

 

标签:void,namespace,clB,ClassA,三个,C++,using,tesseract
来源: https://www.cnblogs.com/songhaibin/p/13502736.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有