我知道这些问题似乎含糊不清,但我想不出任何其他方式来表达它,但是,是否有可能做到这样的事情:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
答案 0 :(得分:19)
是的,这是可能的。以下只是声明wsx
class wsx;
这种声明被称为前向声明,因为当两个类相互引用时需要它:
class A;
class B { A * a; };
class A { B * b; };
其中一个需要向前宣布。
答案 1 :(得分:4)
这是类
的定义class wsx
{
public:
wsx();
}
这是构造函数的定义
wsx::wsx()
{
std::cout<<"WSX";
}
这是一个前向声明,表示将在某处定义类
class wsx;
答案 2 :(得分:3)
在您的示例中,
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
所以是的,通过使用class wsx;
,可以在不定义类的情况下声明一个类。类声明允许您声明指向该类的指针和引用,但不能声明该类的实例。编译器需要类定义,因此它知道为类的实例分配多少内存。
答案 3 :(得分:2)
是。但是如果没有声明它就可以 来定义一个类。
因为:每个定义也都是声明。
答案 4 :(得分:0)
你确实定义了这个类。它没有数据成员,但这不是必需的。
答案 5 :(得分:-1)
我不确定你的意思。您粘贴的代码看起来是正确的。