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定义函数指针