C++中怎么使用delete禁止默认行为
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"C++中怎么使用delete禁止默认行为",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中怎么使用delete禁止默认行为"吧
千家信息网最后更新 2025年12月02日C++中怎么使用delete禁止默认行为Reason(原因) Example(示例) Example(示例) Enforcement(实施建议)
这篇文章主要讲解了"C++中怎么使用delete禁止默认行为",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中怎么使用delete禁止默认行为"吧!
如果不需要默认(同时不需要其他选项)行为,使用=delete禁止它们
某些情况下·,也有可能·不希望存在默认行为。
class Immortal {
public:
~Immortal() = delete; // do not allow destruction
// ...
};
void use()
{
Immortal ugh; // error: ugh cannot be destroyed
Immortal* p = new Immortal{};
delete p; // error: cannot destroy *p
}独占指针可以被移动,但是不能被拷贝。为了实现这一点,代码禁止了拷贝操作。禁止拷贝的方法是将源自左值的拷贝操作声明为=delete。
template > class unique_ptr {
public:
// ...
constexpr unique_ptr() noexcept;
explicit unique_ptr(pointer p) noexcept;
// ...
unique_ptr(unique_ptr&& u) noexcept; // move constructor
// ...
unique_ptr(const unique_ptr&) = delete; // disable copy from lvalue
// ...
};
unique_ptr make(); // make "something" and return it by moving
void f()
{
unique_ptr pi {};
auto pi2 {pi}; // error: no move constructor from lvalue
auto pi3 {make()}; // OK, move: the result of make() is an rvalue
} 注意:禁止的函数应该是公有的
按照惯例,被删除函数(deleted functions)声明为public,而不是private。当用户代码尝试调用一个成员函数时,C++会在检查它的删除状态位之前检查它的可获取性(accessibility,即是否为public?)。当用户尝试调用一个声明为private的删除函数时,一些编译器会抱怨这些删除的函数被声明为private
消除默认操作(应该)应该基于类的期待语义。怀疑这些类,但同时维护类的"正面清单",其内容是由人断定是正确的东西。
感谢各位的阅读,以上就是"C++中怎么使用delete禁止默认行为"的内容了,经过本文的学习后,相信大家对C++中怎么使用delete禁止默认行为这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
行为
C++
函数
拷贝
内容
学习
代码
同时
情况
用户
示例
尝试
检查
东西
原因
就是
建议
思路
惯例
成员
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
没有服务器怎么办小程序
vip线路服务器验证怎么破解
数据库简单查询怎么查总金额
上海net软件开发定制
南京易租网络技术有限公司
hfss服务器显卡
闫怀志 网络安全
vps网络安全周
携程服务器供应商
blue coat服务器
wegame预约服务器
郏县精算互联网科技有限公司
学校培训软件开发
无法打开远程管理服务器
vb数据库下载
北京星辰互联网科技
好的简历范文 软件开发
网络安全的认证书
兰州百信服务器
软件开发风险管理
zynq软件开发公司
网络安全的八大龙头股
南宁地瓜网络技术有限公司
2020年高校网络安全事件
看好网络安全概念股
网络技术服务推荐
手托数据库
防火墙 服务器
搜索sr588服务器
数据库覆盖率怎么算