C++ Primer 5th笔记(chap 18 大型程序工具)内联命名空间 (inline namespace)

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 18 大型程序工具)内联命名空间 (inline namespace)相关的知识,希望对你有一定的参考价值。

1. inline必须出现在命名空间第一次出现的地方

inline namespace FifthEd {
    //...
}

//后续再打开命名空间的时候可以写inline也可以不写
namespace FifthEd { // 隐式内敛
    // ...
}

2. 当应用程序的代码在一次发布和另一次发布之间发生改变时,常使用内联命名空间。

eg. 把本书当前版本的所有代码放在一个内联命名空间中,而之前版本的代码都放在一个非内联命名空间中

namespace FourthEd {
    class Query_base { /*...*/ };
    // 本书第4版用到的其他代码
}
 
// 命名空间cplusplus_primer将同时使用这两个命名空间
namespace cplusplus_primer {
	#include "FifthEd.h"
	#include "FoutthEd.h"
}

FifthEd是内联的,所以形如cplusplus_primer::的代码可以直接获得FifthEd的成员

如果想用到早期版本的代码,则必须加上完整的外层命名空间名字:cplusplus_primer::FourthEd::Query_base

以上是关于C++ Primer 5th笔记(chap 18 大型程序工具)内联命名空间 (inline namespace)的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th笔记(chap 18 大型程序工具)noexcept

C++ Primer 5th笔记(chap 18 大型程序工具)异常处理

C++ Primer 5th笔记(chap 18 大型程序工具)捕获异常

C++ Primer 5th笔记(chap 18 大型程序工具)命名空间特性

C++ Primer 5th笔记(chap 18 大型程序工具) 重载与命名空间

C++ Primer 5th笔记(chap 18 大型程序工具)构造函数与虚继承