C++中名称空间和类之间的区别

C++中名称空间和类之间的区别

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

1. 名称空间是一种对标识符进行分组的方法,这样它们就不会发生冲突。使用类意味着可以创建该类的实例,而使用名称空间则不是这样。

2. 您可以对名称空间使用using-声明,而这对于类是不可能的,除非您从它们派生。

3.你可以重新打开一个命名空间,并在整个翻译单元中添加东西。你不能用类来做这个。例如:

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

是合法的,但是:

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

是不合法的。

你可以有一个未命名的命名空间,但是你不能有一个未命名的类。

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;
};

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程