当前位置: 首页 > news >正文

条款05:了解C++默默编写并调用哪些函数

目录

1.默认生成的函数

2.无法生成的情况

2.1当成员函数有引用 或者 被const修饰

2.2.operator=在基类被私有


1.默认生成的函数

class empty {};//相当于class empty
{
public:empty(){ ... } // 构造函数empty(const empty& rhs) { ... }// 拷贝构造~empty(){ ... } //析构函数empty &operator=(const empty& rhs) { ... } //拷贝赋值
};

这些默认生成的函数都是public和inline。

如果程序员不去写这些函数 ,他们会在被调用的时候由编译器生成。

2.无法生成的情况

2.1当成员函数有引用 或者 被const修饰

template
class NameObject
{
public:NameObject(std::string &name, const T& obj){}
private:std::string &nameValue;const T ObjcetValue;
}std::string pet1 ("dog", 2);
std::string pet2 ("cat", 2);pet1 = pet2; 

 当成员函数有引用 或者 被const修饰,编译器是不会自动生成 operator= 的,因为 &必须在定义的时候初始化,而且初始化之后不可以进行修改,const也同样,这个时候需要程序员手动写operator=。

2.2.operator=在基类被私有

operator=被声明为私有,派生类生成的默认operator=回去先调用基类类的operator=,但是没有权限,编译器也无能为力。

相关文章:

  • 【工具】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~
  • 【Netty篇】Handler Pipeline 详解
  • linux多线(进)程编程——(8)多进程的冲突问题
  • 【Contiki】Contiki源码目录结构
  • Android启动初始化init.rc详解
  • PotPlayer在AMD 25.3.1以上时出现画面不动问题
  • FreeBSD系统使用 ZFS 添加交换空间swap
  • 【C++】特化妙技与分文件编写 “雷区”
  • 前端渲染pdf文件解决方案
  • 免杀对抗-Webshell篇
  • 2.4 函数的运行原理
  • 常用 Git 命令详解
  • 关于视频的一些算法内容,不包含代码等
  • 计算serise数据的唯一值数量
  • 【2-12】CRC循环冗余校验码
  • 从原理到实践:NFS复杂故障处理方法论
  • 【人工智能】大模型的Prompt工程:释放DeepSeek潜能的艺术与科学
  • 快速迭代收缩-阈值算法(FISTA)
  • Python学习笔记(五)(列表与元组)
  • vue3 element-plus el-time-picker控制只显示时 分,并且控制可选的开始结束时间
  • 2025上海十大动漫IP评选活动启动
  • 中国以优化营商环境为支点,为全球企业提供可预期市场环境
  • 体坛联播|曼联热刺会师欧联杯决赛,多哈世乒赛首日赛程出炉
  • 最快3天开通一条定制公交线路!上海推出服务平台更快响应市民需求
  • 中华人民共和国和俄罗斯联邦在纪念中国人民抗日战争、苏联伟大卫国战争胜利和联合国成立80周年之际关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 盖茨:20年内将捐出几乎全部财富,盖茨基金会2045年关闭