返回类型 - C++ "class"关键字

"class" Keyword on Return Type - C++

本文关键字:class 关键字 C++ 返回类型      更新时间:2023-10-16

我遇到了一段看起来像这样的代码:

class SomeClass* GetSomeClass()
{
  return _instanceOfSomeClass;
}

"class"关键字对返回类型有什么作用?我找不到任何地方来解释它的功能是什么。它是否只是指定它将 SomeClass 作为一个类来谈论,以防存在某种歧义或其他内容?我很困惑。

class SomeClass 是引用类类型SomeClass的简单方式(从技术上讲,它是详细的类型说明符)。通常,添加class是多余的,两者是等效的。但是,如果存在同名的变量或函数,则有时需要解决歧义。

它用于消除歧义。

例如,假设您在相同(或外部)作用域中有一个同名的变量,如下所示:

int SomeClass; //SomeClass is declared to be variable here
class SomeClass* GetSomeClass()
{
  return _instanceOfSomeClass;
}

如果没有 class 关键字,函数声明对编译器没有意义。class 关键字告诉编译器忽略变量声明,并查找类声明。

这是一个前向声明。它允许您只说"我的程序中某处有一个类 SomeClass,只是为了防止重新生成,它对该文件不可见"。

但是,无论何时实现此函数,该文件都必须具有类 SomeClass 的实际接口。