C++day02

本文详细介绍了C++中的命名空间使用,包括命名空间的嵌套、匿名命名空间、跨模块调用以及使用规则。同时,文章还探讨了const关键字的应用,包括修饰内置类型、指针类型以及在函数指针和指针函数中的作用。
摘要由CSDN通过智能技术生成

命名空间一共有三种使用方式,分别是using编译指令、作用域限定符、using声明机制。

using声明机制的特点是:需要哪个实体的时候就引入到程序中,不需要的实体就不引入,尽可能减小犯错误的概率。

将using编译指令写在局部作用域,这样using编译指令的效果也会在其作用域结束时结束。

当然如果需要在同一个作用域下使用两个命名空间中同名的实体,这种方法就不可行了,可以采用第一种方式加上命名空间的作用域限定。

命名空间的嵌套使用(搜索引擎其二)

类似于文件夹下还可以建立文件夹,命名空间中还可以定义命名空间。那么内层命名空间中的实体如何访问呢?

namespace wd
{
int num = 100;

void func(){
    cout << "func" << endl;
}

namespace cpp
{
int num = 200;

void func(){
    cout << "cpp::func" << endl;
}
}//end of namespace cpp

}//end of namespace wd

//方式一,使用作用域限定精确访问实体
void test0(){
    cout << wd::cpp::num << endl;
    wd::cpp::func();
}

//方式二,using编译指令一次性引入cpp的实体
void test1(){
    using namespace wd::cpp;
    cout << num << endl;
    func();
}

//方式三,using声明语句
void test2(){
    using wd::cpp::num;
    using wd::cpp::func;
    cout << num << endl;
    func();
}

 

匿名命名空间(了解)

命名空间还可以不定义名字,不定义名字的命名空间称为匿名命名空间(简称匿名空间)。

通常,如果我们希望一部分实体只在本文件中起作用,那么可以将它们定义在匿名空间中。

其定义方式如下:

namespace {
//...
}//end of anonymous namespace

 

 使用匿名空间中实体时,可以直接使用,也可以加上作用域限定符(没有空间名)

namespace {
int val = 10;
void func(){
cout << "func()" << endl;
}
}//end of anonymous namespace

//以下用法均ok
void test0(){
cout << val << endl;
cout << ::val << endl;
func();
::func();
}

 什么时候使用匿名空间?

匿名空间注意事项:

(1)匿名空间不要定义与全局空间中同名的实体;

(2)匿名空间中的实体不能跨模块调用。

概念:匿名空间和有名空间(具名空间)统称为命名空间(名称空间、名字空间)。

跨模块调用问题

一个.c/.cc/*.cpp的文件可以称为一个模块。

补充:vim多窗口操作技巧

:e 文件名(带路径) 若文件存在就打开,不存在就创建
:bp 打开上一个窗口
:bn 打开下一个窗口
:bd 关闭当前窗口

1、全局变量和函数是可以跨模块调用的

//externA.cc
int num = 100;
​
void print(){
cout << &
  • 50
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值