0

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

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

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

4

2 回答 2

2

关键字class是可选的*。

所以(等效的)代码行

ClassName* MethodName(int foo) const;

定义了一个函数

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

*这太罕见了,我什至不知道这甚至可以写。struct StructName在 C 中,如果您定义了某种结构类型的变量(或函数参数/返回类型),则通常会编写。由于 C 结构类似于类的概念(请注意,在 C++ 中,结构类),出于兼容性原因,它们似乎允许两者structclass写在结构/类名的前面。C++ 旨在能够解析几乎未修改的 C 代码(虽然它们是两种独立的语言)。所以基本上把关键字classorstruct放在任何类名前面都是没有意义的。

于 2013-10-27T20:25:17.977 回答
0

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

于 2013-10-27T20:40:02.433 回答