带有`class`阐述类型说明符的方法参数

时间:2012-12-04 15:53:21

标签: c++ class

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

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

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

4 个答案:

答案 0 :(得分:5)

在指定类型时,

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

即,以下函数具有等效签名:

class mytype { ... };

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

答案 1 :(得分:2)

如果事先未声明相关课程,则必须加入class一词。

答案 2 :(得分:1)

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

然而,这并不意味着它是被禁止的,而且任何人都认为它是好的风格,虽然直觉rsm是某种类型(不一定是类,可能是类的类型定义) )

该构造函数的目的是构造一个类型为lock_server的对象,其中包含一个指向可修改rsm对象的指针。我的猜测是rsm有一些lock方法将从构造函数中调用,而unlock方法将从析构函数中调用。

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

答案 3 :(得分:1)

它是指向类rsm的对象的指针。

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

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