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

【学习笔记】构造函数+重载相关

【学习笔记】构造函数+重载相关

一、构造函数

构造函数在创建对象的过程就会执行,带参数与不带参数,带参数的构造函数会默认将成员变量赋值传进去的参数。

class Layer {
private:int layer_id;       // 层IDstd::string layer_json;  // 层的JSON配置
public:Layer(){ }// 构造函数实现Layer(int layerId, const std::string& layerJson) {layer_id = layerId;      // 初始化层IDlayer_json = layerJson;  // 初始化JSON配置}
};
// 使用带参数的构造函数创建Layer对象
Layer layer(1, "{\"name\":\"background\",\"opacity\":0.8}");// 等价于先创建对象,再赋值(但更高效)
Layer layer2;
layer2.layer_id = 1;
layer2.layer_json = "{\"name\":\"background\",\"opacity\":0.8}";

二、拷贝构造函数

拷贝构造函数的主要作用是用一个已存在的Window对象来初始化新对象。

class Window
{public:Window(){ }virtual ~Window(){ }// const:确保原对象不被修改,允许接收常量对象。Window(const Window& obj){win_id = obj.win_id;                                sizeType = obj.sizeType;type = obj.type;zorder = obj.zorder; isBackground = obj.isBackground; isFreeze = obj.isFreeze; }
..........

*默认行为:要是没有自定义拷贝构造函数,编译器会生成默认的,不过默认的是浅拷贝,这在对象管理动态资源时可能会引发问题。比如指针,浅拷贝仅复制指针值,导致多个对象指向同一块内存,析构时会引发双重释放错误。

三、赋值运算符重载

赋值运算符重载 Window& operator=(const Window& obj) 允许你使用 = 符号将一个 Window 对象的值赋给另一个 Window 对象。

class Window
{public:Window(){ }virtual ~Window(){ }Window& operator=(const Window& obj){if (this == &obj) return *this;  // 处理自我赋值win_id = obj.win_id;                                sizeType = obj.sizeType;type = obj.type;zorder = obj.zorder; isBackground = obj.isBackground; isFreeze = obj.isFreeze; isLock = obj.isLock; return *this;}
..........

举例:

Window win1;
Window win2;
win2 = win1;

四、比较运算符重载

class Window
{public:Window(){ }virtual ~Window(){ }// 相等比较运算符的实现bool operator==(const Window& obj) const{if(win_id == obj.win_id &&sizeType == obj.sizeType &&type == obj.type &&zorder == obj.zorder &&source == obj.source &&layerout == obj.layerout &&invalidResource == obj.invalidResource &&layerType == obj.layerType)return true;elsereturn false;}// 不相等比较运算符的实现bool operator!=(const Window& obj) const{return !operator==(obj);}
..........

举例:

Window win1;
Window win2;
win2 = win1;
if(win1 == win2)
{........
}

文章转载自:

http://dOQgtGTK.wjwfj.cn
http://tBThJR6u.wjwfj.cn
http://DUgR1mLn.wjwfj.cn
http://joFUhxOM.wjwfj.cn
http://ri4pwtZG.wjwfj.cn
http://YKrl7ygP.wjwfj.cn
http://v0V61KSz.wjwfj.cn
http://RPFpUTo2.wjwfj.cn
http://3Ts8hS3O.wjwfj.cn
http://6mDXmHvc.wjwfj.cn
http://eY8ECY09.wjwfj.cn
http://xNgHAGfv.wjwfj.cn
http://vJd5rxTi.wjwfj.cn
http://3hYXT9KY.wjwfj.cn
http://MuryLopA.wjwfj.cn
http://vPL1SQtw.wjwfj.cn
http://dXiklqVO.wjwfj.cn
http://vPAVjtV6.wjwfj.cn
http://BUdrKznF.wjwfj.cn
http://u3sBhkat.wjwfj.cn
http://pITTum86.wjwfj.cn
http://wEVtcrxb.wjwfj.cn
http://VTPnFyAH.wjwfj.cn
http://b84w22O7.wjwfj.cn
http://pvQaLhg7.wjwfj.cn
http://tEHRCcxd.wjwfj.cn
http://Fu7Ygja3.wjwfj.cn
http://jTQ3RZmN.wjwfj.cn
http://DSkhN4jK.wjwfj.cn
http://mIoGtRNp.wjwfj.cn
http://www.dtcms.com/a/235874.html

相关文章:

  • Halcon腐蚀例子
  • php执行系统命令的四个常用函数
  • cursor和windsurf使用体验对比
  • 国10平方拆分、数正方形
  • python --导出数据库表结构(pymysql)
  • 【Linux】awk 命令详解及使用示例:结构化文本数据处理工具
  • boost::qvm 使用示例
  • FineReport模板认证找不到模板
  • 逻辑卷和硬盘配额(补充)
  • GT接收端共模电压
  • 永磁同步电机控制算法--模糊PI转速控制器
  • Spring Cloud核心组件深度解析(2025终极指南)
  • nuScenes 数据集及同类型自动驾驶数据集介绍
  • vcs仿真产生fsdb波形的两种方式
  • 关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
  • Cesium添加图片标记点、glb模型
  • 【机械视觉】Halcon—【十一、车牌检测和筛子检测】
  • 爱普生差分晶振SG2016HHN精准医疗的时钟保障
  • 软件验收报告对企业的重要性
  • 5G网络中频段的分配
  • MySQL 高级学习篇
  • C++.OpenGL (4/64)纹理(Texture)
  • 智能对联网页小程序的仓颉之旅
  • Linux 内核性能分析确保成效的关键知识点总结
  • Android端口转发
  • DTS 数据迁移
  • 接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法
  • 02 nginx 的环境搭建
  • python打卡训练营打卡记录day46
  • 小程序实现下拉刷新(踩坑 下拉刷新不触发)