c++ ---- using

来源:互联网 发布:淘宝不支持子账号登陆 编辑:程序博客网 时间:2024/06/05 23:40

using 的使用分为using指示与using声明。

避免在头文件使用using,最多也只能在函数或命名空间中使用。

1、using 声明

有效范围:从声明处至所在作用域结束。

using声明可以控制哪些名字是可见的。这种使用非常广泛:

如:

①在函数中,或在cpp文件中使用using std::cin;

②在派生类中使用using使基类成员可见。这种用法一般用在 私有继承 和 成员隐藏。

class Base{public:    int a}class D : private Base{}
此时D中的a是private属性,如果我们想把它转成public属性,则需要使用如下代码

public:using Base::a;

再看下面的代码

class base{public:    void func() {}}class d : public base{public:// 注意!!!与上面那个函数不一样!!!    func(int) {}}int main(){    base b;    d;    b.func();    d.func(); // 错误!!!!!成员隐藏}
在派生类D中,是看不到func()无参函数的,因为它被有参函数func(int)隐藏了!如果要解决这个问题,可以用using声明。

public:using base::func; // using 声明只能带一个名字,不能带参数。



using声明语句可以出现在全局作用域,局部作用域,命名空间作用域,以及类作用域。


2、using 指示。其实就是using namesapce name;

无法控制部分名字可见,因为所有名字都是可见的。

using指示可以出现在全局作用域,局部作用域,命名空间作用域,但不能出现在类作用域。

0 0