c++11 using作用

c++11 using的作用

1.引用命名空间,例如:using namespace std;

2.可以让基类同名函数在派生类可见,假如想通过派生类来调用基类的重载函数,则可以用using来实现, 子类调用父类的重载函数

方法如下: 

//父类:
class Parent
{

public:
    void xxfunc();//父类的函数,不带参
    void xxfunc(int);//带1参
    void xxfunc(int,int);//带2参
    void xxfunc(int,int,int);//带3参
    void xxfunc(int,int,int,int);//带4参
}


//子类:
class Child: public Parent
{

public:
    void xxfunc(int);//子类的函数,和父类有同名的函数

public:
    using Parent::xxfunc;// 把父类的xxfunc函数暴露出来, 格式:using 父类::函数名

}

//调用
Child child;
child.xxfunc();//此时调用的是父类的不带参xxfunc函数
child.xxfunc(1);//此时调用的是子类的带1参xxfunc函数 , 注意
child.xxfunc(1,2);//此时调用的是父类的带2参xxfunc函数
child.xxfunc(1,1,1);//此时调用的是父类的带3参xxfunc函数
child.xxfunc(1,1,1,1);//此时调用的是父类的带4参xxfunc函数

3.用using定义别名

1.模板起别名,例子如下: 

//c++98
template <typename T>
class map_t1
{
    typedef std::map <std::string, T> type; //定义了一个类型,type只是一个别名
}

//调用
map_t1<int>::type map1;
map1.insert({"a", 1});



//c++11 
//用using 实现,using用来给一个类型模板起别名
template <typename T>
using map_type= std::map <std::string, T>; //定义了一个类型,map_type只是一个别名

//调用
map_type<int> map2;
map2.insert({"b", 1});

1.函数指针,例子如下:  

typedef int(*FuncType)(int, int); //用typedef定义函数指针
using FuncType = int(*)(int, int); //用using定义函数指针

 


版权声明:本文为hyl999原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。