【发布时间】:2012-10-06 07:02:59
【问题描述】:
所以在我的头文件中,我定义/声明了一个类,其中包含名为 User
的所有功能然后在 .cpp 源文件中顶部附近有 class User;
我是 c 新手,但在我查看的几个教程中找不到答案,所以来到这里
它有什么作用?
谢谢。
【问题讨论】:
-
谢谢大家,是的,我知道我将它标记为 C,但后来意识到它是 C++,我们在某些时候都是新人
标签: c++
所以在我的头文件中,我定义/声明了一个类,其中包含名为 User
的所有功能然后在 .cpp 源文件中顶部附近有 class User;
我是 c 新手,但在我查看的几个教程中找不到答案,所以来到这里
它有什么作用?
谢谢。
【问题讨论】:
标签: c++
它被称为前向声明,使编译器能够识别类,而无需实际了解其内部结构。您只需通知编译器存在这样的类,并且声明指向它的指针不会引发错误。
替代方法是包含声明类的相应头文件,但如果您只需要指向该类型的指针,那将太重了。
【讨论】:
MyClass thisIsMyClass 之类的对象时,编译器需要知道 MyClass 的大小,因此前向声明不适合,但是如果您使用指向 MyClass* pThisIsMyClass 之类的类的指针,那么编译器只需要知道一个名为 MyClass 的对象在某处定义,然后您可以使用前向声明或包含标题。
这是一种所谓的“前向声明”:它使编译器知道该类,而无需实际定义它。请注意,这是 C++,而不是 C。
【讨论】:
它声明类而不实际定义它。从这个意义上说,它没有什么不同:
void doSomething(void);
该原型告诉编译器doSomething() 存在,但实际上并没有具体说明它的作用。
它通常用在你需要类存在的地方(所以你可以以某种方式引用它)但你不需要知道它的任何属性。
【讨论】: