C++中using的用法

大半夜闲看书,翻了几处也是巧,都看到了这个using,简单写写这个using在C plusplus中的使用。

1、引入命名空间

这个司空见惯了,写第一个程序hello world的时候,多半书籍都会给你写这么一句:

using namespace std;

引入命名空间std的意思,这样在这个引入命名空间的范围内,使用函数时就不用再标明其出处,可以理解为告诉编译器,我从哪里来,你就到这个地方找我吧。这样就不会在调用多个同名函数的时候搞错了,A和B空间下的函数是不一样的,using A就去A下找吧,别犯错误迷路了去B下找这就错了。

2、类型别名

在C++11新标准中,采用using来给类型取一个别名,这样就好记了,避免有的名字过于繁琐在用的时候还要写原名。比如:
列宁同志的原名:弗拉基米尔·伊里奇·乌里扬诺夫,你记得住???but 大家想了下,那就叫你列宁吧,这样好记啊,叫起来也方便不是。回到我们的using上来,比如有个类名为THE_FOOTBALL_TEAM_LIST,多长,你用啊,给它取个别名吧

using TFTL = THE_FOOTBALL_TEAM_LIST;

3、在子类中引入基类的成员

最常见的一个例子就是继承构造

class Base
{
public:
	int _value;
	Base(){}
	Base(int a){_value = a; cout <<_value<<endl;}
}
public child : public Base
{
	using Base::Base
}

再者一种情况:

class Base {
public:
std::size_t size() const { return n; }
protected:
std::size_t n;
};
class Child : private Base { . . . };

在上面一段代码中,基类的成员size()是个public成员,但是在子类中由于继承是private方式,所以子类的size()是private,想让它是public的,就做下面的一个小改动,加上using后,表明从基类中引入,是public的。

class Child: private Base {
public:
using Base::size;
protected:
using Base::n;
};

还有就是假如子类中有和基类同名的函数,这时还想用基类的函数,就可以使用using,不然就会隐藏基类的函数。

#include <iostream>
using namespace std;

class Base
{
public:
    int printTest(){cout<<"Test function"<<endl; return 0;}
};
class Child : Base
{
public:
    using Base::printfTest;//using声明只能指定一个名字,不能带形参表
    int printfTest(int);
};

int main()
{
    Base a; Child b;
    a.printfTest();
    b.printfTest();//如果去掉子类中的using声明,会报错
    system("pause");
    return 0;
    }
  • 27
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bussy-Lake

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值