类是数据类型。它们是结构的扩展概念,它们可以包含数据成员,但它们也可以包含函数作为成员,而名称空间只是将项目分组在一起的一种抽象方式。命名空间不能创建为对象。可以将其更多地视为命名约定。它用作附加信息,以区分不同库中可用的具有相同名称的相似函数,类,变量等。本质上,命名空间定义了作用域,以下是要说明的一些要点:
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等的更多准备工作,请参阅“完整面试准备课程” 。