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

标签 c++ qt object

我正在尝试为文件设置权限。我以为我可以在处理 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/

相关文章:

c++ - 具有多重继承的 operator() 定义不明确

c++ - 多个字符串比较

python - PyQt5 GUI 仅在屏幕关闭并重新打开时更新

javascript - ajax 请求后访问 JSON 中的元素

javascript - 使用过滤功能从另一个对象创建对象

javascript - 如何使用 lodash 生成 key 配对对象结果?

C++ type_traits 模板,如果不是 const,则添加引用

c++ - 不能调用基类保护函数?

c++ - Qt - 查找鼠标屏幕 x,y - 即使应用程序已关闭

c++ - 使用加载二进制文件中的 DLL 中的代码