在这种情况下我真的需要调用 QFile::close() 吗?

问题描述 投票:0回答:2

我不确定 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() (它会在销毁时自动执行),这会是一个问题吗?

qt4
2个回答
16
投票

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


-1
投票

我更喜欢在函数返回之前调用 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()
时可以再次正确打开文件。

© www.soinside.com 2019 - 2024. All rights reserved.