c++基本语法之一二三(3)-using关键字

前言

  本文介绍using关键字的使用

引入命名空间

  《c++primer》一书中介绍了两种using引入命名空间
  (1)命名空间using声明

using std::cout;

  (2)引入命名空间

using namespace std;

  很显然,第一种只能用于单个函数,第二种会将整个命名空间的函数都取消命名空间前缀处理。
  那么思考这么一个问题,既然第二种能够针对整个命名空间的所有函数都不再需要命名空间前缀了,那么是不是不再需要第一种呢?答案当然是否定的。看代码


using namespace std;
using namespace deived;

namespace deived
{
	void cout()
	{

	}
}
int main()
{
	double* B = nullptr;
	cout << "B的值是:" << B << endl;
}

  这种情况,会发生什么问题?没错,编译器报错,指示“这是一个不明确的引用”,因为引入了多个命名空间,并且存在了同名函数,这就会造成二义性,编译器不知道这个cout指的是std::cout还是deived::cout,所以在可能引用多个命名空间的文件中尽量避免引入整个命名空间,另外,禁止在头文件中引入命名空间,因为头文件可能会被其他文件包含,再次导致我们上面说的二义性问题。

引用基类成员

有些时候,派生类想改变基类成员在本类表现出不同的封装级别,此时可以使用using来引入,但是需要注意的是,这种用法实际上违背了c++的封装性,除非特殊情况,否则不建议使用。

类型别名

c++11后支持的一个用法,作用和typedef完全一样,也是定义类型别名,语法如下:

using uInt unsigned Int;

好了,本文就到这里~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值