函数定义中的类前缀有什么用?

时间:2018-12-01 17:29:14

标签: c++

我遇到了具有如下函数定义的代码:

void VisitorPrimitiveSelector::visitObjComposite(class Object3DComposite& comp);

参数列表中的class字到底有什么用?我以前从未见过这种东西,而且似乎也无法在线找到任何东西。

3 个答案:

答案 0 :(得分:2)

这只是编写Object3DComposite& comp的另一种方式。除非有一个名为class的东西,它也不是一个类,否则不需要Object3DComposite关键字。然后,class显然不需要告诉编译器期望使用哪个具有相同名称的符号。

答案 1 :(得分:2)

它是Object3DComposite类的前向声明

答案 2 :(得分:1)

追溯到C时代,

struct foo {};

没有引入名为foo的类型。相反,它引入了struct foo

C程序员通过

解决了这个问题
typedef struct foo{}foo_t;

引入了foo_t作为struct foo的别名。

(在大多数情况下)您不再需要它,因为在C ++中,struct foo引入了一个名为foo的类型。尽管如此,旧语法仍然有效。

class大多只是struct,具有不同的默认隐私规则。