知识卡片
删除函数更明确
内容
=delete 把禁止调用的操作写入公开可见的接口,由编译器检查;私有但未定义的函数可能把错误拖到链接阶段。deleted 也能用于非成员函数及特定模板实例,适合明确拒绝危险转换或复制能力。
参考来源
- 位置:《Effective Modern C++》第3章《移步现代C++》,条款十一:优先考虑使用 deleted 函数而非使用未定义的私有声明(源文件:_epub-src/EPUB/text/ch004.xhtml)
- 结论依据:原文比较私有未定义函数与 deleted 的错误暴露时机,且扩展到非成员和模板实例。
- 原始内容:比起声明函数为 private 但不定义,使用 deleted 函数更好 任何函数都能被删除(be deleted),包括非成员函数和模板实例(译注:实例化的函数)