class ClassName * MethodName(int foo)const - 这是什么意思?

时间:2013-10-27 20:21:33

标签: c++

我一直在浏览代码,并在头文件中看到了这样的构造:

...
class ClassName* MethodName(int foo) const; 
...

ClassName是在其他头文件中定义的类。 编辑: 使问题更清楚。我特别感兴趣的是关键字。

2 个答案:

答案 0 :(得分:2)

关键字class是可选的。

所以(等效的)代码行

ClassName* MethodName(int foo) const;

定义了一个

的函数
  • int作为参数
  • 返回指向ClassName实例
  • 的指针
  • 承诺不会修改调用它的实例(this指针在函数内是const)

*我不知道甚至可以写这个,这是不常见的。在C中,如果定义某种结构类型的变量(或函数参数/返回类型),通常会编写struct StructName。由于C结构类似于类的概念(请不要在C ++中,结构类),似乎它们允许写入structclass出于兼容性原因,结构/类名称的前面。 C ++旨在能够解析几乎未经修改的C代码(虽然它们是两种不同的语言)。因此,基本上将关键字classstruct放在任何类名前面是毫无意义的。

答案 1 :(得分:0)

它就是所谓的详细类型说明符。它在声明性区域中引入了一个新的类名。在您的示例中,ClassName是作为新类型引入的。