C++ 带有'class'详细类型说明符的方法参数

C++ 带有'class'详细类型说明符的方法参数,c++,class,C++,Class,我试图理解以下代码: lock_server::lock_server(class rsm *_rsm) { //code } 我知道这是类的构造函数,但我不理解它的参数。 我猜这是一个指向类的指针(名为_rsm)?这有意义吗?在哪里可以找到关于这个的文档?< /p> 类或结构关键字在C++中是可选的,在指定类型时,通常省略。 也就是说,以下函数具有等效签名: class mytype { ... }; void f(mytype* data); // compiler "und

我试图理解以下代码:

lock_server::lock_server(class rsm *_rsm)
{
//code
}
我知道这是类的构造函数,但我不理解它的参数。
我猜这是一个指向类的指针(名为_rsm)?这有意义吗?在哪里可以找到关于这个的文档?< /p> 类或结构关键字在C++中是可选的,在指定类型时,通常省略。 也就是说,以下函数具有等效签名:

class mytype { ... };

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

<> >代码> >代码> > RSM < /C> >在C++中不是必需的(不像C,在这里必须指定“代码>结构>代码>”。< /P> 然而,这并不意味着它是被禁止的,无论是谁写的,都觉得它是一种好的风格,尽管从直觉上看,
rsm
是某种类型(不一定是类,也可能是类的typedef)

该构造函数的目的是构造一个类型为
lock\u server
的对象,其指针指向一个可修改的
rsm
对象。我猜
rsm
有某种
lock
方法将从构造函数调用,还有一种
unlock
方法将从析构函数调用


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

它是一个指针,类的对象
rsm


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


但是,如果该类以前未在源代码中声明,则必须使用
class
关键字。在这种情况下,
rsm
声明为不完整的类类型。

如果所讨论的类事先没有声明,则必须包含单词
class

它只是一个指针,只是这次指向类rms。class关键字是为了启发读者,但可以省略。它被称为一个精心设计的类型说明符。感谢您的广泛回答!您的猜测有点错误(lock_server实际上是一个RPC公开的互斥映射),但是,仔细阅读,RAII似乎是一种有趣的技术