【问题标题】:"class" Keyword on Return Type - C++ [duplicate]返回类型上的“class”关键字 - C++ [重复]
【发布时间】:2015-06-27 14:14:45
【问题描述】:

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

class SomeClass* GetSomeClass()
{
  return _instanceOfSomeClass;
}

“class”关键字对返回类型有什么作用?我找不到任何解释它的功能的地方。它是否只是指定它正在谈论 SomeClass 作为一个类,以防有某种模棱两可之类的东西?我很困惑。

【问题讨论】:

标签: c++


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    用于消除歧义。

    例如,如果您在相同(或外部)范围内有一个同名的变量,如下所示:

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

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

    【讨论】:

      【解决方案3】:

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

      不过,无论何时实现此功能,文件都必须具有 SomeClass 类的实际接口。

      【讨论】:

      • 虽然从技术上讲确实如此,但我相信您错过了问题的一些细微差别。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      相关资源
      最近更新 更多