02_命名空间和作用域

本文详细介绍了C++中的命名空间(namespace)的使用,包括基本创建、重名、嵌套、取别名和作用域下函数定义等特性。通过实例展示了命名空间如何组织和避免命名冲突,以及如何调用不同作用域下的变量和函数。同时,提到了无名命名空间的特殊性质,即其内部成员默认为静态(static)修饰。
摘要由CSDN通过智能技术生成

目录

一 基本使用

二 特点

1 命名空间可以重名

2 命名空间可以嵌套

 3 命名空间取别名

 4 作用域下函数的定义

(1)作用域下直接定义

(2)间接定义

5  命令空间不取名字时


命名空间(namespace)只能定义在全局范围

命名空间下可以存放变量,结构体,函数,类

一 基本使用

创建格式:
namespace (空间名){

变量,结构体,函数,类等等
}

调用方式:

(空间名)::(变量,结构体,函数,类等等)

例:

# include<iostream>
using namespace std;
int a = 00, b = 01;
namespace A					//命名空间(namespace)只能定义在全局范围
{
	int a = 10, b = 11;		//命名空间下可以存放变量,结构体,函数,类
}
namespace B {
	int  a = 20, b = 21;
}
void test1() {
	int a = 30, b = 31;
	printf("局部:\ta=%d\tb=%d\n",a,b );
	printf("全局:\ta=%d\tb=%d\n",::a,::b);
	printf("A:\ta=%d\tb=%d\n", A::a, A::b);
	printf("B:\ta=%d\tb=%d\n", B::a, B::b);
}
int main() {
	test1();
	return 0;
}

 ::a默认调用的全局变量a

二 特点

1 命名空间可以重名

namespace B {
	int  a = 20, b = 21;
}
namespace B {
	int c = 21;				//命名空间可以重名,相当于合并操作
}

2 命名空间可以嵌套

嵌套格式:

namespace C {				//命名空间嵌套
	int d = 001;
	namespace D {
		int d = 002;
	}
}

调用格式:

void test2() {
	cout << C::d << endl;
	cout << C::D::d << endl;
}
int main(){
test2();
return 0;
}

 3 命名空间取别名

 格式:

namespace (旧名字)=(新名字);

namespace C {				//命名空间嵌套
	int d = 001;
	namespace D {
		int d = 002;
	}
}
namespace newc = C;

此时,newc就是C的另一个名字

 4 作用域下函数的定义

(1)作用域下直接定义

定义:

namespace A					//命名空间(namespace)只能定义在全局范围
{
	int a = 10, b = 11;		//命名空间下可以存放变量,结构体,函数,类
	void fll(int age) {     //作用域下直接定义函数
		cout << age << endl;
		cout << age << endl;
	}
}

(2)间接定义

void A::foo(int age) {		//A作用域下的函数
	cout << age << endl;
}

namespace A					
{
	void foo(int age);		//A 作用域下的声明;
}

调用:

void test2() {
	A::fll(11);
	A::foo(22);
}

int main() {
	test2();
	return 0;
}

结果:

5  命令空间不取名字时

namespace {
    int a = 10;
    void func() { 
        cout << "hello namespace" << endl; 
    }
}

不取名字时相当于这个命名空间内的所有成员都被编译器加上了static修饰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值