我正在尝试理解以下代码:
lock_server::lock_server(class rsm *_rsm)
{
//code
}
我知道这是该类的构造函数,但我不理解它的论点。 我猜这是一个指向类的指针(名称为_rsm)?那有意义吗?我在哪里可以找到关于此的文档?
答案 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
被声明为不完整的类类型。