提问者:小点点

了解Qt命名空间向前声明[重复]


所以我对Qt和C++都是新手,但我想弄清楚下面的代码是怎么回事。

我有一个头文件和源文件charinfowindow。在我拥有的源文件中:

using namespace std

在头文件中

namespace Ui {
    class CharInfoWindow;
}

我试着找出这些代码在网上做什么,但我只是在找关于如何做的资源。

如果有人能告诉我,首先,这些代码是做什么的,其次,他们为什么这样做。不胜感激。

谢谢


共2个答案

匿名用户

不管怎么说,使用namespace std被认为是一种糟糕的做法。如果您不想一直说std::cout,您可以:

使用STD::COUT;使用STD::ENDL;

等。这意味着你不会把整个世界都拉进范围。

但简而言之:

使用命名空间标准;

这意味着您不必像没有std::那样将其放在所有东西前面。

另一半--forward声明--它只是将类放在给定的名称空间中,而不使整个include文件变得很大:

namespace UI {
... everything
}

匿名用户

“使用命名空间std”意味着在此源文件中,使用来自此命名空间的类型时不必使用std::前缀(例如,可以编写string而不是std::string)。

头文件中的“class xxx;”是类xxx的“向前声明”。它告诉编译器“存在一个类xxx”,这样它就可以依靠它了。但是,类的定义在别处(在另一个头文件中)。