命名空间和类是C ++中的两个不同概念。命名空间仅用于防止名称冲突,而类是用户定义的类型。
比为什么他们使用相同的::
语法?
例如:
namespace::function();
class::function();
答案 0 :(得分:6)
命名空间和类都构成 scopes 。 范围是一个相当统一的命名空间和类的概念:C ++中的类范围和命名空间范围(以及其他类型的范围)。由于::
是一个范围解析运算符,因此它在语法上类似的方式与命名空间和类一起使用时并不罕见。
答案 1 :(得分:2)
因为类与名称空间一样引入了(通常是命名的)作用域。范围解析运算符与类和命名空间的工作方式相同。添加更多运算符来做同样的事情没有任何优势。
如果课程没有引入范围,则会出现问题:
struct buffer {
int size, *data;
};
struct list {
node* head;
int size; // oops, name conflict!
};
显然,课程必须为其成员引入范围。