【发布时间】:2015-06-27 14:14:45
【问题描述】:
我遇到了一段看起来像这样的代码:
class SomeClass* GetSomeClass()
{
return _instanceOfSomeClass;
}
“class”关键字对返回类型有什么作用?我找不到任何解释它的功能的地方。它是否只是指定它正在谈论 SomeClass 作为一个类,以防有某种模棱两可之类的东西?我很困惑。
【问题讨论】:
标签: c++
我遇到了一段看起来像这样的代码:
class SomeClass* GetSomeClass()
{
return _instanceOfSomeClass;
}
“class”关键字对返回类型有什么作用?我找不到任何解释它的功能的地方。它是否只是指定它正在谈论 SomeClass 作为一个类,以防有某种模棱两可之类的东西?我很困惑。
【问题讨论】:
标签: c++
class SomeClass 是引用类类型SomeClass 的一种简写方式(从技术上讲,它是详细的类型说明符)。通常,添加class 是多余的,两者是等价的。但有时需要解决歧义,如果有同名的变量或函数。
【讨论】:
用于消除歧义。
例如,如果您在相同(或外部)范围内有一个同名的变量,如下所示:
int SomeClass; //SomeClass is declared to be variable here
class SomeClass* GetSomeClass()
{
return _instanceOfSomeClass;
}
没有class 关键字,函数声明对编译器没有意义。 class 关键字告诉编译器忽略变量声明,并寻找类声明。
【讨论】:
这是一个前向声明。它允许您只说“我的程序中某处有一个类 SomeClass,它只是对这个文件不可见,以防止重新声明”。
不过,无论何时实现此功能,文件都必须具有 SomeClass 类的实际接口。
【讨论】: