您的位置:首页 > 编程语言 > C语言/C++

C++中的 using

2016-07-31 20:39 309 查看
using在c++中有两个用法:

一、使用名字空间。二、使用名字空间的名字。

一使用名字空间

大家都知道,一般常见的

[cpp] view
plain copy

 print?

using namespace std;  

完了。

二、使用名字空间的名字。



[cpp] view
plain copy

 print?

using std::cin;  

using std::vector;  

就是。

而我想写的是在继承里面using的用处。我知道的有两个,如下:

1)去除个别成员

如果进行private或者protected继承,则基类的访问级别在派生类中更加受限。我们可以使用using恢复继承成员的访问级别。

[cpp] view
plain copy

 print?

class Base{  

    public:  

    std::size_t get_size(){ return n;}  

    protected:  

    std::size_t n;  

};  

class Derived:private Base{  

    public:  

    using Base::get_size;//在Derived的public部分增加一个using声明,就可以使get_size本类的public成员。  

    protected:  

    using Base::n;//此时n为protected成员。  

};  

2)重载基类函数

如果派生类想重载基类的函数,要么重定义所有版本,要么一个也不定义。这个是因为派生类定义的函数会覆盖基类的名字。但是我们很多时候只是想重定义其中某些

函数,那么这个规则无疑令人厌烦。

使用 using 就可以解决这个问题。

[cpp] view
plain copy

 print?

class Base{  

    public:  

    void test();  

    void test(int );  

    void test(double);  

};  

class Derived:public:Base{  

    public:  

    using Base::test;  

    void test(int ,double );  

};  

int main()  

{  

    Derived d;  

    d.test()  

    d.test(1);  

    d.test(1,1.2);  

    return 0;  

}  

这样就可以成功重载基类的函数。如果去掉using那一行,则程序将在编译时报错:找不到test(),test(int)的版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: