我正在尝试为文件设置权限。我想我可以在处理QFile
对象时保存一行代码,就像这样。
QFile("somefile.txt").setPermissions(QFile::WriteOther);
它编译并运行,但没有做任何事情。当然,当我以正确的方式做到这一点时,它起作用了。 (毫不奇怪,那里。)
QFile tempFileHandle("somefile.txt");
tempFileHandle.setPermissions(QFile::WriteOther);
我认为这是理解C ++语法的好机会。我会接受我的原始方式不起作用,但为什么?
答案 0 :(得分:1)
好吧,我不知道QFile,也不知道你的观察到底是什么,但它可能归结为QFile的析构函数所做的一切。
第一个示例创建临时对象。我猜它的构造函数创建了somefile.txt。然后setPermissions设置您在该文件上指定的任何内容。现在的问题是析构函数的作用:
在另一个示例中,您创建的命名变量在超出范围之前不会被销毁,您甚至可以从磁盘上的文件中分离对象,这可能会使该文件上的析构函数无效。
答案 1 :(得分:0)
好的,你说它编译并运行但没有做任何事情。 setPermissions()甚至被调用,你检查过吗?在我看来,编译器已经优化了整行,因为你纯粹是在一个临时对象上工作。