1. 配合命名空间,对命名空间进行权限管理
using namespace std;//释放整个命名空间到当前作用域 using std::cout; //释放某个变量到当前作用域 • 1 • 2
2. 类型重命名
作用等同于typedef
typedef std::vector<int> intvec; using intvec = std::vector<int>; //这两个写法是等价的
再来看一个函数指针的例子
typedef void (*FP) (int, const std::string&); using FP = void (*) (int, const std::string&);
3. 继承中,在子类引用基类成员
有这样一种应用场景,比如我们需要私有继承一个基类,然后又想将基类中的某些public接口在子类对象实例化后对外开放直接使用。如下即可
class Base { protected: void test1() { cout << "test1" << endl; } void test1(int a) {cout << "test2" << endl; } int value = 55; }; class Derived : private Base //使用默认继承 { public: //using Base::test1; //using只是声明,不参与形参的指定 //using Base::value; void test2() { cout << "value is " << value << endl; } };
private继承子类中是无法访问基类成员的,即test2会编译出错。但是如果我们把上面注释的声明给放开,则没有问题。
参看链接:
https://blog.csdn.net/weixin_39640298/article/details/84641726