我一直在浏览代码,并在头文件中看到了这样的构造:
...
class ClassName* MethodName(int foo) const;
...
ClassName是在其他头文件中定义的类。 编辑: 使问题更清楚。我特别感兴趣的是关键字。
答案 0 :(得分:2)
关键字class
是可选的。
所以(等效的)代码行
ClassName* MethodName(int foo) const;
定义了一个
的函数int
作为参数ClassName
实例this
指针在函数内是const) *我不知道甚至可以写这个,这是不常见的。在C中,如果定义某种结构类型的变量(或函数参数/返回类型),通常会编写struct StructName
。由于C结构类似于类的概念(请不要在C ++中,结构是类),似乎它们允许写入struct
和class
出于兼容性原因,结构/类名称的前面。 C ++旨在能够解析几乎未经修改的C代码(虽然它们是两种不同的语言)。因此,基本上将关键字class
或struct
放在任何类名前面是毫无意义的。
答案 1 :(得分:0)
它就是所谓的详细类型说明符。它在声明性区域中引入了一个新的类名。在您的示例中,ClassName是作为新类型引入的。