我正在学习C++,之前有扎实的C基础。为了避免reddit和hacker news上C++的错误,我一直在使用Google C++样式指南和LLVM源代码作为自己代码的参考。其中一个引人注目的问题是这两个项目都使用以下代码。以下内容摘自LLVM的include/Support/MemoryBuffer.h:
可能重复:
为什么拷贝构造函数和赋值运算符被禁止?
MemoryBuffer(const MemoryBuffer &); // DO NOT IMPLEMENT
MemoryBuffer &operator=(const MemoryBuffer &); // DO NOT IMPLEMENT
谷歌回声了这种用法。显然,禁用这些“复制构造函数”是一件好事。
那么我的问题是:为什么这些东西如此可怕,如果它们没有受到保护,它们的使用会是什么样子,对代码有何影响?