C++ class ClassName*MethodName(intfoo)const-它是什么意思?

C++ class ClassName*MethodName(intfoo)const-它是什么意思?,c++,C++,我一直在浏览代码,在头文件中看到这样的构造: ... class ClassName* MethodName(int foo) const; ... ClassName是在其他头文件中定义的类。 编辑: 使问题更清楚。我对class关键字特别感兴趣。关键字class是可选的* 因此,代码的(等效)行 ClassName* MethodName(int foo) const; 定义一个函数,该函数 将int作为参数 返回指向ClassName实例的指针 承诺不修改调用它的实例(此指针在函数

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

...
class ClassName* MethodName(int foo) const; 
...
ClassName是在其他头文件中定义的类。 编辑:
使问题更清楚。我对class关键字特别感兴趣。

关键字
class
是可选的*

因此,代码的(等效)行

ClassName* MethodName(int foo) const;
定义一个函数,该函数

  • int
    作为参数
  • 返回指向
    ClassName
    实例的指针
  • 承诺不修改调用它的实例(此指针在函数中是常量)


*这是如此罕见,我甚至不知道这是可以写的。在C语言中,如果定义了某个结构类型的变量(或函数参数/返回类型),通常会编写
structStructName
。由于C结构类似于类的概念(请不要在C++中使用,Struts是类),它们看起来允许两个代码< >结构> <代码>和<代码>类< /C>。C++被设计成能够解析C代码几乎未修改的(虽然它们是两种不同的语言)。因此,基本上,将关键字
class
struct
放在任何类名前面是没有意义的。

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

感谢您的准确回答。我知道其他的事情,但我真的很感兴趣,就是使用class关键字,因为我看到它被多次使用。我猜它是用来提高代码的可读性的?哇。也没想到会编译。