前言
从 C 语言到 C++ 的转变涉及编程范式的巨大跨越。如果只关注'封装、继承、多态'而忽略基础语法差异,后续学习容易困惑。
本文旨在总结 C++ 常用但 C 语言没有的基础知识,帮助初学者理清 C 与 C++ 之间的差异。
一、namespace 是什么?
1. 情景引入
在 C 语言中,变量和函数存储于全局作用域,同名会导致冲突。例如:
#include<iostream>
using namespace std;
int test(int a) {
return a;
}
int main() {
int test = 1;
cout << test(test);
return 0;
}
上述代码编译错误,因为 test 既指函数又指变量,造成命名冲突。C++ 通过 namespace 关键字解决了这一问题。
2. 命名空间定义
使用 namespace 关键字自定义命名空间(作用域),其中可定义变量、函数或类型。
namespace a1 {
int hello = 6;
int test(int a) {
return a;
}
}
3. 命名空间的使用
有三种方式:
- 加作用限定符:使用前加空间名称和
::。int main() { cout << a1::hello; return 0; } - 引入特定成员:使用
using将某个成员引入全局作用域。a1::hello; { cout << hello; ; }

