当前位置: 首页 > 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=,但是没有权限,编译器也无能为力。

http://www.dtcms.com/a/139103.html

相关文章:

  • 【工具】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~
  • 【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控制只显示时 分,并且控制可选的开始结束时间
  • AOSP世界时间的更新
  • 基于多模态双路TCN-SE-YOLO的小目标检测
  • 三维领域的语义分割
  • 【深基18.例3】查找文献-图的储存与遍历
  • 无线uniapp调试设备
  • EthernetiP转modbusTCP网关在加氢催化中的应用
  • Flask(补充内容)配置SSL 证书 实现 HTTPS 服务
  • Flask(2): 在windows系统上部署项目2
  • 【C】初阶数据结构10 -- 希尔排序
  • 知识库Qanyting部署问题总结