带有“class”详细类型说明符的方法参数

Method parameter with `class` elaborated type specifier

本文关键字:说明符 方法 参数 类型 class 带有      更新时间:2023-10-16

我试图理解以下代码:

lock_server::lock_server(class rsm *_rsm)
{
//code
}

我知道这是类的构造函数,但我不明白它的论点。我猜这是一个指向的指针(名称为 _rsm)?这有意义吗?在哪里可以找到有关此的文档?

类或结构关键字在指定类型时C++是可选的,通常省略。

也就是说,以下函数具有等效的签名:

class mytype { ... };
void f(mytype* data);       // compiler "understands" that mytype is a class
void g(class mytype* data);

如果事先没有声明有问题的类,则必须包含单词 class

术语rsm之前class关键字在C++中不是必需的(与C中不同,在C中必须指定单词struct)。

然而,这并不意味着它是被禁止的,无论谁写它都觉得这是很好的风格,尽管直觉rsm是某种类型(不一定是类,可能是类的 typedef)

该构造函数的目的是构造一个 lock_server 类型的对象,该对象具有指向可修改rsm对象的指针。我的猜测是,rsm有某种将从构造函数调用的lock方法,以及将从析构函数调用的unlock方法。

lock_server类的目的是实现所谓的 RAII:一个愚蠢的首字母缩略词,但在现实生活中它意味着自动化资源管理 - 当对象离开范围时,析构函数会在其中释放它持有的资源,在这种情况下是锁定rsm对象。

它是一个

指针,指向类rsm的对象。

关键字 class 是可选的,只要以前定义/声明了类rsm

但是,如果以前未在源中的点声明该类,则 class 关键字是必需的。在本例中,rsm声明为不完整的类类型。