首页 > 编程语言 >C++中的命名空间

C++中的命名空间

时间:2023-07-27 22:56:27浏览次数:42  
标签:cout int namespace C++ 空间 匿名 命名 using

命名空间

1. 概念

通过定义命名空间,可以将符号分类管理,防止命名冲突。

2. 使用方式

  • 作用域限定符 std::cout
  • using 编译指令 using namespace std;
  • using 声明机制 using std::cout

using 编译指令简洁,但易发生冲突。常用using 声明机制。且,using 声明函数时不用带形参部分。

int main(){
    //作用域限定符
	std::cout << "Hello world" << std::endl;
    
    //using 声明机制
    using std::cout;
    cout << "hello world" << std::endl;
    
    //using 编译指令
    using namespace std;
    cout << "hello world" << endl;
}

3. 匿名空间

特殊的命名空间

namespace{
    int num = 5;
}
int main(){
    cout << "num = " << num << endl;
    cout << "num = " << ::num << endl;
    // 二者等价
}

可以将匿名空间看作全局变量,但匿名空间的实体注意不要和全局的实体重名,易发生冲空。

int num = 10;
namespace{
int num = 8;
}

int main(){
    cout << "num = " << num << endl;
    // 只能读到 10, 而非8。即使用 ::num也不行。匿名空间的重名实体无法被访问到。
}

4. 匿名空间和有名空间的嵌套

匿名套匿名

 namespace{
     namespace{
         如果发生重名,则无法访问到。
     }
 }

匿名套有名

namespace{
	namespace A{
        //通过 ::A:: 访问,或者 A::访问
    }
}

有名套匿名

namespace A{
	namespace{
		// 都通过 A:: 进行访问	
	}
}

有名套有名

namespace A{
	namespace B{
		// A::B:: 这样访问
	}
}

标签:cout,int,namespace,C++,空间,匿名,命名,using
From: https://www.cnblogs.com/zxinlog/p/17586340.html

相关文章

  • C++入门到放弃(04)——类的访问权限:public、private、protected
    1.成员访问权限假定以下类:classBase{public://constructfunctionBase(inta=0,intb=0,intc=0):m_public(),m_protected(),m_private(){}intm_public;voidpublic_fun(){cout<<m_public<<endl;}protected:intm_prote......
  • 2023-7-27 WPF自定义命名空间在xaml中的使用
    xaml自定义命名空间【作者】长生为啥要用自定义命名空间这是常见的几种命名空间xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Rxsfadsf"xmlns:s......
  • 有关java语法的一些细节(与c++比较)
    与c++不同,java不支持方法参数的默认值设置,因此若有此需要,可以使用重载的方式去实现,如:publicclassTest{publicintfunc(inta,Stringb){//TODO}publicintfunc(){returnfunc(0,newString("defult"));}...}java中类型转换都......
  • c++学习
    下面的内容都是在linux环境下。网络I/O有阻塞IO,非阻塞IO,IO多路复用,信号驱动IO和异步IO五种方式。1.阻塞非阻塞阻塞与非阻塞针对的是数据就绪阶段,如果是阻塞,则程序将一直等待,知道数据就绪,然后开始读取,如果是非阻塞,则若数据还未就绪,程序可以先执行别的事务,但是I/O还是要......
  • 5、开发环境-调试C/C++控制器
    控制器处理在Webots环境中,Webots应用程序和每个机器人C/C++控制器在不同的操作系统进程中执行。例如,当执行“soccer.wbt”世界时,内存中总共有八个进程;一个用于Webots,六个用于六个玩家机器人,一个用于监督机器人。若要使用MicrosoftVisualStudio调试C/C++控制器,请参阅此处。当控......
  • 《c++徒步》串口篇
    串口和USB串口是指通过串行传输数据的接口,它使用少量的引脚来传输数据。串口通常以RS-232(常见的是DB9或DB25连接器)或RS-485等协议进行通信。串口常用于连接计算机和外部设备,例如调制解调器、打印机、传感器等。USB是一种通用的连接标准,用于连接各种外部设备到计算机或其他主机设......
  • C++中的模板
    1.概念模板是对类型的抽象,为了更好的实现多态的思想。模板分为类模板和函数模板。2.函数模板就是在函数之前声明一下模板,然后执行的时候,函数自行判断推导类型。intadd(inta,intb){returna+b;}doubleadd(doublea,doubleb){returna+b;}//如a......
  • c++ std::thread::joinable
    std:......
  • c++
    /*#include<iostream>usingnamespacestd;intmain(){intn; intb; intc=0;cin>>n;inta[n];for(inti=0;i<n;i++){cin>>a[i];}for(inti=0;i<n;i++){for(intj=0;j<n-i-1;j++){......
  • c++学习:封装、继承、多态
    c++是面向对象的编程语言,相对于c具有封装、继承、多态的特点。封装定义:封装就是将对象的属性和行为封装起来,形成一个有机的整体,其载体就是类。类通常对客户隐藏其实现细节,这就是封装的思想,就比如我们使用一个库函数时,我们只需要知道它的作用就可以了,没必要去了解它的内部工......