C++ 基础概念速览与常见用法
C++ 兼容 C,这意味着可以在 C++ 环境里直接写很多 C 代码。本杰尼·斯特劳斯特卢普是 C++ 之父。
命名空间
C++ 里,标识符的查找遵循作用域规则:编译器先看当前最内层作用域,找到了就停,不会再往外层找。问题也就出在这里——不同模块一旦起了同名,冲突很容易出现。
命名冲突是怎么来的
先看一个局部变量遮住库函数名的例子:
#include<stdio.h>
#include<stdlib.h>
int main() {
int rand = 10;
printf("%d\n", rand); // 局部变量优先,代码正确执行
}
如果把 rand 放到全局,就不一样了:
#include<stdio.h>
#include<stdlib.h>
int rand = 10; // 与 stdlib.h 中的 rand 函数冲突
int main() {
printf("%d\n", rand); // 编译报错
}
这类问题用命名空间来隔开。
命名空间的写法
命名空间可以理解成一个带名字的容器,用来放变量、函数、类这些标识符。访问时通常写成 命名空间名::标识符。
namespace mycode {
int rand = 10;
}
int main() {
printf("%d\n", mycode::rand); // 正常打印 10
}


