在C++中创建临时无名类实例

zar*_*zar -2 c++

有时我需要实例化一个类才能调用它的一个方法.例如,在Qt中读取注册表.

QSettings settings;
settings.setValue( DEST_FOLDER, destDir );
Run Code Online (Sandbox Code Playgroud)

但我改用这种语法.

QSettings().setValue( DEST_FOLDER, destDir );
Run Code Online (Sandbox Code Playgroud)

它有效,但我没有看到任何关于它的文档,它叫什么?我搜索了"无名的c ++类",但它没有出现.有匿名课程,但我认为这是不同的.

我的问题是它有点像调用构造函数..这种语法有没有名称?有人可以解释或指向我这种初始化的文档吗?愚蠢的问题但这样做不好吗?

Bau*_*gen 7

QSettings().setValue( DEST_FOLDER, destDir );
Run Code Online (Sandbox Code Playgroud)

将为您提供一个默认构造的临时实例,QSettings实例将存在,直到完整表达式结束,在本例;中为行尾,然后调用setValue(...)on表示临时.

您可以通过这种方式调用您想要的每个构造函数,而不仅仅是您在示例中调用的默认构造函数.如果class A有一个构造函数和一个成员函数fun,只需要一个int,

A(5).fun(20);
Run Code Online (Sandbox Code Playgroud)

将创建类型的临时对象A通过A::int(5),然后调用A::fun(int i)i = 20就可以了.

这是允许和保存,这是否真的有意义取决于你最近调用的方法.

请注意,类本身既不是无名也不是临时的,只有您创建的实例.