7

我不确定 QFile 的行为,

bool Class::Function (const QString & name)
{
  QFile fp (name);
  if (fp.open (QIODevice::ReadOnly))
  {
     // read file
     return false;
  }
  return true;
}

嗯,它不像 C 中的 FILE* 指针(必须关闭和释放),如果我不调用 QFile::close() 会出现问题(它会在销毁时自动执行)吗?

4

2 回答 2

11

QFile对象在其析构函数时自动关闭( Qt 文档);因此无需close()显式调用。

于 2012-10-17T14:09:59.983 回答
0

我更喜欢在函数返回之前调用 fp.close():这可能不是必需的,但也可能无害。

Qt 文档可能无法反映实际代码。例如,以下是 Qt 5.5.0 中的源代码:

/*!
    Destroys the file object, closing it if necessary.
*/
QFile::~QFile()
{
}

所以QFile::close()不会在析构函数中自动调用。文档可能需要更新。

作为一个额外的优势,将 QFile::open() 与 QFile::close() 匹配将确保文件可以在下次bool Class::Function()调用函数时再次正确打开。

于 2015-11-17T01:17:50.280 回答