:: 符号,是作用域解析运算符,是C++特有的运算符
1. 访问类的静态方法/属性
cpp
// 使用 :: 访问静态成员
Scene::create() // 调用Scene类的静态方法create()
Color::red // 访问Color类的静态属性red
Math::PI // 访问Math类的静态常量PI
什么是静态成员
静态成员是指属于类本身而非类的实例(对象)的成员(变量或方法)。它们与类直接关联,而不是与类的某个具体对象关联。
静态成员核心特性
-
类级别共享
- 静态成员在内存中只有唯一一份拷贝,所有类的实例共享同一份静态成员。
- 修改静态成员会影响所有实例。
-
无需实例化即可访问
- 通过类名直接访问(推荐):
ClassName.staticMember
- 也可通过对象访问(不推荐,易混淆):
obj.staticMember
- 通过类名直接访问(推荐):
-
生命周期
- 静态成员在程序启动时初始化,在程序结束时销毁(与类同生命周期)。
C++用 :: 区分静态成员,JavaScript用 . 统一处理
js
// 使用 . 访问静态成员
Scene.create() // 调用Scene类的静态方法create()
Color.red // 访问Color类的静态属性red
Math.PI // 访问Math类的静态常量PI
2. 访问命名空间
cpp
// C++ - 命名空间访问
std::cout // std命名空间中的cout
threepp::Scene // threepp命名空间中的Scene
math::TWO_PI // math命名空间中的TWO_PI常量
js
// JavaScript - 类似的概念是模块/对象
console.log // console对象的log方法
Three.Scene // Three对象/模块的Scene
Math.PI // Math对象的PI
3. 使用规律
- 看到 :: 前面是大写开头 → 通常是类的静态成员
cpp
Scene::create() // Scene类的静态方法
Color::red // Color类的静态属性
- 看到 :: 前面是小写开头 → 通常是命名空间
cpp
std::cout // 标准库命名空间
math::TWO_PI // math命名空间