![](/img/trans.png)
[英]What does “class ClassName;” mean when put in header file of other class definition?
[英]What does “class example;” mean in a Header File?
我有一个真正令我困惑的问题!
让我们在这里观看这段代码:
#ifndef HEADER_H
#define HEADER_H
#include <iostream>
class example;
class anything_else;
class A {
public:
A();
};
...
什么是class example;
并为class anything_else;
是的,而class A {};
被宣布? 在CPP文件中,我看到了像void example::release() { ... }
这样的定义,依此类推...
我真的很困惑,有人在class example;
有示例class example;
...?
什么是
class example;
并为class anything_else;
意思
它们是class example
和anything_else
声明。 他们告诉编译器那些是有效的类名。 这种声明被非正式地称为“转发声明”。
而
class A {};
被宣布?
class A
被定义 。
在CPP文件中,我看到了像
void example::release() { ... }
这样的定义,依此类推...
那就是函数example::release
的定义。
在example
定义的某处,有函数的声明:
class example
{
// ...
void release(); // declaration
};
如果仅声明了example
且未定义,则example::release
的定义将导致编译错误。
如果要具有尚未包含的类型的成员变量,请对该类型进行前向声明 。
class X;
forward声明了类X,因此在我们的类声明中可以有一个指向该类的指针。
class Y
{
...
X* p;
};
稍后,您必须在.cpp文件中的某个位置提供类的定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.