栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 命名空间

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 命名空间

命名空间:名称空间(关键字:namespace)被设计来克服无法避免的重复命名的问题,并被
         用作额外的信息来区分类似的函数、类、变量等等,它们在不同的库中具有相同的
         名称。使用名称空间,可以定义名称的上下文。本质上,名称空间定义了一个范围
定义和使用:namespace A{//定义命名空间A
          	int i = 10;
          }
          namespace A{//定义命名空间A,同名的命名空间编译器会合成为一个空间
          	int j = 20;
          }
          namespace B{
          	int k = 30;
          	
          	namespace C{
          		int k = 40;
          	}
          }
          //引用命名空间,方式一,引入命名空间中的所有内容
          using namespace A;
          //引用命名空间,方式二,引入命名空间中的指定内容
          //using namespace A::i;
          int main(){
          	std::cout << i << std::endl;//打印i,结果:10
          	std::cout << j << std::endl;//打印j,结果:20
          	//也可以在方法中引用命名空间
          	using namespace B;
          	std::cout << k << std::endl;//打印k,结果:30
          	//引用命名空间中的命名空间
          	using namespace B::C;
          	std::cout << k << std::endl;//打印k,结果:40
          }
附:方法体外引用命名空间器作用域是全局的,方法体内引用命名空间是局部的

using的其他作用:
1、定义类型别名
using str = std::string;
using pfn = void(*)();
2、更改访问权限
class Father{
public:
	int i = 10;
};
class Son:private Father{
public:
	using Father::i;
}
说明:Son私有继承Father后,Father的公有成员被Son继承为私有成员(处自身以外
     不可访问),如上例子所示使用using,该私有成员就变为了公有成员,此时外界
     可以访问。
3、父类中有多个函数重载,子分类如果要使用所用重载函数,要么不进行重定义,要么全部
   重定义,部分重定义则只能使用对应部分重定义的函数。有时子类只需要仅仅重载父类多
   个重载函数中的一个函数,并且想要继承其他的版本,在这种情况下可以在派生类中为重
   载成员名称提供using声明(将该函数的所有重载实例加到派生类的作用域),使派生类不
   用重定义所继承的每一个基类版本。例如: using 父类类名::函数名,用using 声明
   将名字加入作用域之后,派生类只需要重定义必须定义的那些函数,对其他版本继承即可。
class Father{
public:
	void fn(int i){
		std::cout << “Father - ” << i << std::endl;
	}
	void fn(double d){
		std::cout << “Father - ” << d << std::endl;
	}
};
class Son:public Father{
public:
	using Father::fn;
	void fn(int i){
		std::cout << “Son - ” << i << std::endl;
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号