繁体   English   中英

std :: basic_fstream和std :: unique_lock的接口设计

[英]Interface designs of std::basic_fstream and std::unique_lock

我正在比较这两个类,因为它们都与其他东西相关联。 std::basic_fstream必须与文件关联,而std::unique_lock必须与互斥体关联。 因此,提供open()方法似乎是合理的。 尽管如此, std::unique_lock提供此类方法。 可以通过移动分配执行延迟初始化。 因此,提供open()方法似乎是多余的。 另一方面, std::basic_fstream确实提供了open()方法。 std::basic_fstream在C ++ 11之前存在,并且这是执行延迟初始化的唯一方法。 抛开向后兼容性考虑,是否只会删除std::basic_fstream::open() 还是仍然需要在那里进行操作可能实际上会失败? 请注意,打开(关联)操作始终以std::unique_lock成功(不要与lock操作混淆)。

您的最后一句话实际上包含一个提示:“ open (关联)操作始终以std::unique_lock成功”。 这样可以方便地将开放性声明为类不变,在构造函数中建立开放性,并在极少数失败时引发异常。 与文件相比:打开文件可能并且确实会失败,因此将开放性声明为类不变性在那儿行不通。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM