c++中using的几种用法

最近在使用中,发现了一种以前没学过的using用法,于是在这里,将using的几种用法总结一下。

先来说说我新学会的一种用法,就是起别名,我们都知道typedef可以给我们起别名,using也可以,用法如下

1.using a = pair<int,int>,类似于这样的用法。

当然还有我们熟知的几种用法

2.可以引入命名空间

using namespace std ;

using std::cout;

在这里,我们再来说一下为什么要使用命名空间,举个例子,现在有一个学校,学校里有各种班级年级,现在校长(编译器)捡到一张身份证,需要人认领,叫张三,那么这个学校里有很多重名的人,怎么确定是哪个班的张三,找不到,校长就会疯了,这时如果知道是哪个班级,那么我们就确定了是谁,这时我们发现是二年三班的张三,那么这时就找到了,这个年级班级就是命名空间。我们引入命名空间的概念就是c++为了避免命名冲突的一种机制。

3.可以改变基类在子类中访问权限

class a
{
 public:
   void test(){
cout << "" << endl;
}
private:
    fun(){}

};

class b::protected a
{
 public:
      using a::test;

    };

如果我们直接继承的时候,基类中的fun为私有成员,子类没有权限去用,但是using之后就可以使用了。

还有一种使用,就是如果我们基类中和子类出现同名函数时,基类中的同名函数在使用时会被隐藏,那么我们有一种办法,就是在子类中将基类中的同名函数重写

class a
{
  public:
        void test(int a)
        {cout << "a" << endl;}

};

class b::public a
{
public:
        using a::test;
        void test(){}

};

,可这样太麻烦了,于是我们用上面的方法便很容易就可以使用基类的函数,然后要注意,using 这样用的时候,后面的函数只写名字,不加形参。

发布了27 篇原创文章 · 获赞 8 · 访问量 2137

猜你喜欢

转载自blog.csdn.net/hgxy123/article/details/97768537