0

我正在尝试理解以下代码:

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

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

4

4 回答 4

5

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

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

class mytype { ... };

void f(mytype* data);       // compiler "understands" that mytype is a class
void g(class mytype* data);
于 2012-12-04T15:55:08.110 回答
2

如果有问题的类没有事先声明,你必须包含这个词class

于 2012-12-05T21:09:22.230 回答
1

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

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

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

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

于 2012-12-04T16:02:51.097 回答
1

它是一个指针,指向 class 的一个对象rsm

该关键字class是可选的,只要该类rsm之前已定义/声明。

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

于 2012-12-04T16:03:55.480 回答