类是数据类型。它们是结构的扩展概念,它们可以包含数据成员,但它们也可以包含函数作为成员,而名称空间只是将项目分组在一起的一种抽象方式。命名空间不能作为对象创建;将其更多地视为一种命名约定。它用作附加信息,以区分不同库中可用的相同名称的类似函数、类、变量等。本质上,命名空间定义了一个范围。以下是一些需要证明的要点:
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
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 WheelCollection;
WheelCollection wheels;
};
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程。