我正在尝试为文件设置权限。我以为我可以在处理 QFile
对象时节省一行代码,就像这样。
QFile("somefile.txt").setPermissions(QFile::WriteOther);
它编译并运行,但什么也没做。当然,当我以正确的方式做到这一点时,它就奏效了。 (毫不奇怪,那里。)
QFile tempFileHandle("somefile.txt");
tempFileHandle.setPermissions(QFile::WriteOther);
我认为这是了解 C++ 语法的好机会。我承认我原来的方法行不通,但为什么?
最佳答案
好吧,我不了解 QFile,也不确切知道你的观察结果是什么,但它可能归结为 QFile 的析构函数中所做的一切。
第一个例子创建临时对象。我猜它的构造函数创建了 somefile.txt。然后 setPermissions 设置您在该文件上指定的任何内容。现在的问题是析构函数做了什么:
- 它可能会删除文件,而你什么也看不到
- 它可能(我没想到会这样,但谁知道呢)将文件设置为只读
- 恢复一些默认设置
在另一个示例中,您创建了命名变量,该变量在超出范围之前不会被销毁,您甚至可以将该对象从磁盘上的文件中分离出来,这可能会使对该文件的析构函数影响无效。
关于c++ - 为什么我不能将方法链接到构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261364/