为什么我不能将方法链接到构造函数?

Vis*_*ota 6 c++ qt object

我正在尝试为文件设置权限.我以为我可以在处理QFile对象时保存一行代码,就像这样.

QFile("somefile.txt").setPermissions(QFile::WriteOther);
Run Code Online (Sandbox Code Playgroud)

它编译并运行,但没有做任何事情.当然,当我以正确的方式做到这一点时,它起作用了.(毫不奇怪,那里.)

QFile tempFileHandle("somefile.txt");
tempFileHandle.setPermissions(QFile::WriteOther);
Run Code Online (Sandbox Code Playgroud)

我认为这是理解C++语法的好机会.我会接受我原来的方式不起作用,但为什么呢?

Tom*_*mek 1

好吧,我不了解 QFile,也不确切知道您的观察是什么,但它可能归结为 QFile 析构函数中所做的任何操作。

第一个示例创建临时对象。我猜它的构造函数创建了 somefile.txt。然后 setPermissions 设置您在该文件上指定的任何内容。现在的问题是析构函数做什么:

  • 它可能会删除文件,但您什么也看不到
  • 它可能(我不希望这样,但谁知道)将文件设置为只读
  • 恢复到一些默认值

在另一个示例中,您创建命名变量,该变量在超出范围之前不会被销毁,您甚至可以将对象与磁盘上的文件分离,这可能会消除析构函数对该文件的影响。