C++中的 using

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)的版本。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值