C++ namespace、const 与 constexpr 知识点总结
命名空间、常量限定符与编译期常量三件套:语法、特点表、易混点(const 修饰指针的读法)、C++11/14/17/20 的演进,以及综合实战示例。 1. namespace 命名空间 namespace(命名空间)用于避免全局命名冲突,把相关的类型、函数、变量组织在一起,形成逻辑上的"作用域边界"。 核心要点:命名空间本质上是给标识符加了一个"姓氏",从而把不同的名字区分开。 1.1 基本声明与使用 #include <iostream> namespace Math { const double PI = 3.141592653589793; int add(int a, int b) { return a + b; } } int main() { // 使用 "::" 作用域限定符访问命名空间中的成员 std::cout << Math::PI << std::endl; // 3.14159... std::cout << Math::add(3, 4) << std::endl; // 7 return 0; } 1.2 命名空间的特点 特点 说明 可嵌套 命名空间内部可以再定义命名空间 可累加 同一作用域下多次声明同一命名空间会合并 可匿名 匿名命名空间相当于"文件内 static",仅本文件可见 可起别名 namespace M = Math; 简化访问 1.3 嵌套命名空间 namespace Outer { namespace Inner { void foo() { /* ... */ } } } // C++17 起可以简写为: namespace Outer::Inner { void bar() { /* ... */ } } // 访问方式 Outer::Inner::foo(); Outer::Inner::bar(); 1.4 匿名命名空间 匿名命名空间中的成员只在当前翻译单元(.cpp 文件)内可见,等价于 static 全局变量/函数,用于隔离实现细节。 ...
豫公网安备41108202000982号