命名空间和类的区别

类是数据类型。它们是结构的扩展概念,它们可以包含数据成员,但它们也可以包含作为成员的函数,而命名空间只是将项目组合在一起的一种抽象方式。 命名空间不能创建为对象; 更多地将其视为命名约定。它用作附加信息来区分不同库中具有相同名称的类似函数、类、变量等。 本质上,命名空间定义了一个范围。以下是一些需要证明的点:

1、命名空间是一种对标识符进行分组的方式,这样它们就不会发生冲突。使用类可以创建该类的实例。
2、可以对命名空间使用 using 声明,除非从它们派生类,否则这是不可能的。
3、可以重新打开命名空间并跨单元添加内容,但是不能用类来做到这一点。

例如:

namespace A {     int f1(); }  namespace A {     int f2(); } 

上面写法是合法的,但是以下写法是非法的:

class A {     int f1(); };  class A { // illegal     int f2(); }; 

4、可以拥有未命名的命名空间,但不能拥有未命名的类。例如:

namespace { // fine  // some code.... }  class { // illegal } 

5、如果名称的长度使代码难以阅读,或者在无法使用 using 指令的头文件中键入繁琐,我们可以创建一个命名空间别名,然后作为实际名称的缩写。 例如:

#include <iostream>  namespace foo {     namespace bar {         namespace baz {             int qux = 42;         }     } }  namespace fbz = foo::bar::baz;  int main() {     std::cout << fbz::qux << '/n'; } 

运行结果:

42 

在类的情况下,必须使用 typedef,例如:

class Car { public:     typedef std::vector<Wheel> WheelCollection;     WheelCollection wheels; }; 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264195.html

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论