现代C++推荐使用=delete禁用拷贝构造和赋值,语义清晰且编译时报错;2. 可继承boost::noncopyable或手动私有化函数实现兼容C++98的禁用方式。

在C++中,如果希望禁止某个类的拷贝构造和赋值操作,可以通过显式删除(= delete)或私有化(private)这些函数来实现。现代C++推荐使用= delete方式,简洁且意图明确。
class NonCopyable {
public:
NonCopyable() = default;
// 禁用拷贝构造
NonCopyable(const NonCopyable&) = delete;
// 禁用拷贝赋值
NonCopyable& operator=(const NonCopyable&) = delete;
};
#include <boost/core/noncopyable.hpp>
class MyWidget : private boost::noncopyable {
// 类自动不可拷贝
};
class NonCopyableOld {
private:
NonCopyableOld(const NonCopyableOld&);
NonCopyableOld& operator=(const NonCopyableOld&);
public:
NonCopyableOld() {}
};
基本上就这些方法。推荐优先使用 = delete,语义清晰,错误提示更友好。对于资源管理类(如独占所有权的智能指针、文件句柄等),禁用拷贝是常见做法,确保资源唯一性。
以上就是c++++中如何为类禁用拷贝或赋值操作 _c++禁用拷贝与赋值操作方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号