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

C++中的 using

2013-10-17 12:18 267 查看
using在c++中有两个用法:

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

一使用名字空间

大家都知道,一般常见的

using namespace std;


完了。

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



using std::cin;
using std::vector;

就是。

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

1)去除个别成员

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

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 就可以解决这个问题。

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)的版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: