我在 Ardupilot 代码中偶然发现了这个成员函数声明:
void update(const class Aircraft &aircraft) override;
您可以在他们的代码库中随处看到它:link
在这种情况下,
const class <class_name>&
和const <class_name>&
有什么区别?
class Aircraft
是所谓的 详细类型说明符。
它很特别,因为它可以用来引用尚未声明的类:
int main() {
class C* pointer;
}
例如,这是一个有效的 C++ 程序,尽管
class C
尚未在任何地方定义。
更流行的实现方式是通过“前向声明”:
class C;
int main() {
C* pointer;
}
除了名称查找差异之外,
class C
和 C
是等效的。