是否可以在不实现的情况下声明一个类? (C ++)

时间:2009-05-16 01:50:36

标签: c++ class declaration definition forward-declaration

我知道这些问题似乎含糊不清,但我想不出任何其他方式来表达它,但是,是否有可能做到这样的事情:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

wsx::wsx()
{
std::cout<<"WSX";
}

6 个答案:

答案 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)

我不确定你的意思。您粘贴的代码看起来是正确的。