我正在尝试理解以下代码:
lock_server::lock_server(class rsm *_rsm)
{
//code
}
我知道这是该类的构造函数,但我不明白它的论点。我猜这是一个指向类的指针(名称为_rsm) ?那有意义吗?我在哪里可以找到有关此的文档?
指定类型时,class 或 struct 关键字在 C++ 中是可选的,通常省略。
也就是说,以下函数具有等效签名:
class mytype { ... };
void f(mytype* data); // compiler "understands" that mytype is a class
void g(class mytype* data);
如果有问题的类没有事先声明,你必须包含这个词class
。
class
在 C++ 中,术语之前的关键字rsm
不是必需的(与 C 中必须指定单词不同struct
)。
然而,这并不意味着它是被禁止的,无论是谁写的都觉得这是一种很好的风格,尽管它rsm
是某种类型的直觉(不一定是一个类,可能是一个类的 typedef)
该构造函数的目的是构造一个lock_server
具有指向可修改对象的指针的类型的rsm
对象。我的猜测是,它rsm
有某种lock
将从构造函数中调用的unlock
方法,以及一种将从析构函数中调用的方法。
该类的目的lock_server
是实现所谓的 RAII:一个愚蠢的首字母缩略词,但在现实生活中,它意味着自动资源管理 - 当对象离开范围时,析构函数开始释放它所持有的资源,在这种情况下,锁定到rsm
目的。
它是一个指针,指向 class 的一个对象rsm
。
该关键字class
是可选的,只要该类rsm
之前已定义/声明。
但是,如果该类之前未在源中声明,则class
关键字是必需的。在这种情况下,rsm
声明为不完整的类类型。