C++对象的赋值

        同类的对象之间可以互相赋值,即一个对象的值可以赋值给另一个对象。对象之间的赋值通过“=”进行。默认就是把一个对象所有非static数据成员的值依次赋值给另一个对象。

        对象赋值的一般形式为:

对象名1 = 对象名2;

        注意:对象名1和对象名2必须是属于同一个类的两个对象。
        例如:

Person pl,p2;//定义两个同类的对象
//......     //这里省略p2初始化的过程
p1 = p2;    //将p2各数据成员的值赋给p1

        例如:对象赋值


class Cuboid //长方体
{
public:Cuboid(int len= 0, int wid= 0, int hei= 0); //有默认参数的构造函数void show();//输出每个成员变量的值
private:int length; //长int width;  //宽int height; //高
};
Cuboid::Cuboid(int len, int wid, int hei)
{length = len;width = wid;height = hei;
}void Cuboid::show()
{cout << "长=" << length << ",宽=" << width << ",高=" << height << endl;
}int main()
{Cuboid Cub1, Cub2{10,20,30}; //定义两个对象Cub1和Cub2cout << "Cub1的:";Cub1.show();cout << "Cub2的:";Cub2.show();Cub1 = Cub2; //将Cub2的值赋给Cub1cout << "Cub1=Cub2后: " << endl;cout << "Cub1的:";Cub1.show();return 0;
}

1.png

        说明:
        (1)对象的赋值只对其中的数据成员赋值,不对成员函数赋值。每个对象的数据成员占用独立的存储空间,不同对象的数据成员占有不同的存储空间,赋值的过程是将一个对象的数据成员在存储空间的值复制给另一个对象的数据成员的存储空间。而不同对象的成员函数是同一个函数代码段,不需要、也无法对它们赋值。
        (2)类的数据成员中不能包括动态分配的数据,否则在赋值时可能出现意想不到的严重后果(这个问题在后面的运算符重载讲解)。

        总结:

如果类的数据成员有指针,则一定要实现如下函数
●构造函数 (如果没有,会出现野指针)
●拷贝构造函数 (如果没有,会出现浅拷贝)
●重载 = 符号 (如果没有,会出现浅拷贝)
●析构函数 (如果没有,会出现内存泄漏)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/686167.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AMBA Bus ACE 总线 8 -- ICache maintenance】

请阅读【AMBA Bus ACE 总线与Cache 专栏 】 欢迎学习:【嵌入式开发学习必备专栏】 文章目录 ACE ICache maintenanceACE ICache maintenance 图 1-1 当一个OS run 多个cpu的时候,根据调度算法的不同,OS 可以根据调度算法的不同分别 run 在某个具体的CPU上,因此,它们会有…

如何编译不同目录下的两个文件

1.直接编译 2.打包成动静态库进行链接

Python写了for i in range(10)却只打印一遍?

题目&#xff1a;定义一个两个参数的重复打印函数&#xff0c;第一个参数指定要打印的字符串&#xff0c;第二个参数指定要重复打印的次数&#xff0c;在主程序中调用该函数&#xff0c;打印10遍你的学号姓名。 为什么调用函数后结果只打印了一遍? 看了题目感觉就很诡异&#…

[MRCTF2020]Ez_bypass1 and [网鼎杯 2020 青龙组]AreUSerialz1()php语言基础学习,以及序列化概念的基本了解

1.[MRCTF2020]Ez_bypass1 &#xff08;1&#xff09;打开环境后它是一串很长并且看起来非常混乱的代码&#xff0c;看不懂那咱就先不管&#xff0c;直接查看源码 &#xff08;2&#xff09;看了之后可以发现它涉及到很多东西 首先就是要进行一个仔细的代码审计&#xff0c;分…

【go项目01_学习记录10】

操作数据库 1 插入数据2 显示文章2.1 修改 articlesShowHandler() 函数2.2 代码解析 3 编辑文章3.1 添加路由3.2 编辑articlesEditHandler()3.3 新建 edit 模板3.4 代码重构3.5 完善articlesUpdateHandler()3.6 测试更新3.7 封装表单验证 1 插入数据 . . . func articlesStore…

在哪里打印资料比较便宜

在数字时代&#xff0c;我们常常需要在各种文档、资料之间穿梭&#xff0c;然而&#xff0c;有时候我们需要的并不是数字版&#xff0c;而是纸质版。那么&#xff0c;在哪里打印资料比较便宜呢&#xff1f; 琢贝云打印以其超低的价格&#xff0c;优质的打印服务&#xff0c;赢…

第十一篇:操作系统新纪元:智能融合、量子跃迁与虚拟现实的交响曲

操作系统新纪元&#xff1a;智能融合、量子跃迁与虚拟现实的交响曲 1 引言 在数字化的浪潮中&#xff0c;操作系统如同一位智慧的舵手&#xff0c;引领着信息技术的航船穿越波涛汹涌的海洋。随着人工智能、物联网、量子计算等前沿技术的蓬勃发展&#xff0c;操作系统正站在一个…

分布式的计算框架之Spark(python第三方库视角学习PySpark)

基本介绍 Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎 。现在形成一个高速发展应用广泛的生态系统。 特点介绍 Spark 主要有三个特点&#xff1a; 首先&#xff0c;高级 API 剥离了对集群本身的关注&#xff0c;Spark 应用开发者可以专注于应用所要做的计…

[NISACTF 2022]popchains

第一步&#xff1a;看到 include($value); 作为链尾&#xff0c;则要触发 append($value) -->>__invoke()&#xff0c;看到$function()。 __invoke()&#xff1a;对象以函数形式被调用时触发 第二步&#xff1a;$function() &#xff0c;则要触发 __get($key)&#xff0…

【电子商务设计师】2024年5月考试答题技巧与注意事项

电子商务设计师答题技巧&#xff1a; 1、综合知识 &#xff08;1&#xff09;首先是分析试题的技巧 --先看清楚问题&#xff0c;再看选项&#xff1b; --判断题目到底考察的是什么知识点&#xff0c;排除干扰项。 &#xff08;2&#xff09;掌握答题的技巧 --题目往往会选…

Java入门基础学习笔记13——数据类型

数据类型的分类&#xff1a; 基本数据类型 引用数据类型 基本数据类型&#xff1a;4大类8种类型&#xff1a; 定义整形用int&#xff0c;再大的数用long。 package cn.ensource.variable;public class VariableDemo2 {public static void main(String[] args) {//目标&#x…

文章分享:《肿瘤DNA甲基化标志物检测及临床应用专家共识(2024版)》

本文摘自于《肿瘤DNA甲基化标志物检测及临床应用专家共识&#xff08;2024版&#xff09;》 目录 1. DNA甲基化标志物概述 2 DNA甲基化标志物的临床检测 2.1 临床样本前处理注意事项 2.2 DNA甲基化标志物检测技术方法 2.2.1 DNA提取与纯化 2.2.2 DNA转化 2.2.3 DNA 甲基…