千家信息网

C++11中=delete的用法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了C++11中=delete的用法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++11中,当我们定义一个类的成员函数时,如果后面使
千家信息网最后更新 2026年11月01日C++11中=delete的用法是什么

本篇文章为大家展示了C++11中=delete的用法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

C++11中,当我们定义一个类的成员函数时,如果后面使用"=delete"去修饰,那么就表示这个函数被定义为deleted,也就意味着这个成员函数不能再被调用,否则就会出错。

#include class TestClass{public:    int func(int data)=delete;};int main(void){    TestClass obj;    obj.func(100);    return 0;}

编译时直接报错,如下,

在C++11之前,当我们希望一个类不能被拷贝,就会把构造函数定义为private,但是在C++11里就不需要这样做了,只需要在构造函数后面加上=delete来修饰下就可以了。

巧妙用法

这里说个=delete的巧妙用法,在C++里会有很多隐式类型转换,如下代码,

#include class TestClass{public:    void func(int data) { printf("data: %d\n", data); }};int main(void){    TestClass obj;    obj.func(100);    obj.func(100.0);    return 0;}

输出如下,

当我们把100.0传给obj.func()时,发生了隐式类型转换,由double转为了int,有时我们不希望发生这样的转换,我们就是希望传进来的参数和规定的类型一致,那么此时可以使用=delete来达到这个目的,如下,

#include class TestClass{public:    void func(int data) { printf("data: %d\n", data); }    void func(double data)=delete;};int main(void){    TestClass obj;    obj.func(100);    obj.func(100.0);    return 0;}

我们把参数类型是double的重载函数加上=delete进行修饰,表示这个函数被删除,那么用户就不能使用这个函数了,这样再编译就会出错,

上述内容就是C++11中=delete的用法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

函数 类型 巧妙 内容 参数 就是 成员 技能 知识 编译 简明 一致 简明扼要 代码 意味 拷贝 文章 是在 更多 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 科技股互联网 科技服务与互联网 远拓互联网科技 汇久创客互联网科技 赫美联合互联网科技 湖南洣水互联网科技有限公司扣款 博兴的互联网电子科技公司 成都互联网科技公司100强 互联网软件和科技 注册互联网科技公司经营范围大全 爱医互联网络科技 美国互联网科技实力 互联网金融科技公司的优势 山东星卡互联网科技有限公司官网 下一代互联网重大应用科技园 九思连强互联网电子科技有限公司 版纳互联网科技选哪家 互联网科技品牌 平安好医生打造互联网科技医疗 互联网科技媒体 互联网科技论文 深圳市运趣互联网科技有限公司 昭通云南众福互联网科技有限公司 互联网对科技的发展 湖北码尼互联网科技有限公司电话 洛阳昕诺飞互联网科技有限公司 华夏恒生科技与互联网科技 本届互联网大会上的黑科技 互联网科技创业有什么好项目
0