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和Cub2
    cout << "Cub1的:";
    Cub1.show();
    cout << "Cub2的:";
    Cub2.show();

    Cub1 = Cub2; //将Cub2的值赋给Cub1
    cout << "Cub1=Cub2后: " << endl;
    cout << "Cub1的:";
    Cub1.show();

    return 0;
}

1.png

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

        总结:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4000字超详解Linux权限

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 在Linux当中权限的体现主要有两种 普通用户 超…

重装前端整体流程

用户管理 --汇总 -- 明细-CSDN博客 一、node 这个看环境变量 2023最新版Node.js下载安装及环境配置教程&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了_nodejs安装及环境配置-CSDN博客 配置到国内镜像的时候&#xff0c;去看&#xff0c;淘…

linux上安装Jmeter环境

以前都是在Windows本机上使用界面版Jmeter&#xff0c;今天试一下安装到linux上在linux中使用&#xff0c;Jmeter的使用需要先安装jdk环境然后再配置jmeter。 1.配置环境 linux环境&#xff1a;Centos 8.2 64位 JDK版本&#xff1a;jdk-8u221-linux-x64.tar.gz &#xff08;…

ICode国际青少年编程竞赛- Python-4级训练场-绿色飞板1

ICode国际青少年编程竞赛- Python-4级训练场-绿色飞板1 1、 while Flyer.disappear():wait() Dev.step(4)2、 Dev.turnRight() Dev.step()while Flyer[0].disappear():wait() Dev.step(3) Dev.turnLeft() Dev.step() while Flyer[1].disappear():wait() Dev.step(2) Dev.tu…

牛信云:以客户为中心打造全流程营销闭环 | 企业出海案例精选

自2018年成立以来&#xff0c;深圳牛信网络科技有限公司&#xff08;以下简称“牛信云”&#xff09;一直坚持以技术驱动为核心&#xff0c;并注重全球资源整合以及服务体系的搭建&#xff0c;目前&#xff0c;已经形成了以新加坡为中心&#xff0c;以中国、印尼、马来西亚、荷…

uni-app(四):原生插件开发(Android)

原生插件开发 原生插件开发module1.创建模块2.解决报错3.修改依赖4.编写插件代码5.添加插件配置6.引入模块7.调用插件代码8.运行 component1.创建模块2.解决报错3.修改依赖4.编写插件代码5.添加插件配置6.引入模块7.调用插件代码8.运行 原生插件开发 主要分为两类扩展: Module:…

Ubuntu系统下编译OpenCV4.8源码

OpenCV4.8源码编译与安装 其实很简单&#xff0c;只要三步即可搞定&#xff0c;第一步是下载指定版本的源码包&#xff1b;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持&#xff1b;第三步就是编译OpenCV源码包生成安装文件并安装。 01下载OpenCV4.8源码包 在Ubunt…

JavaScript事件对象

华子目录 事件对象js事件驱动机制 三种事件模型1.标签绑定2.DOM0事件模型3.DOM2事件模型捕获流与冒泡流removeEventListener事件移除 事件类型鼠标事件mouse event键盘事件keyboard event多媒体事件media event表单事件form event窗口事件window event其他事件 事件对象切换图片…

适用于 macOS 的最佳独立 HBO Max 客户端

适用于 macOS 的最佳独立 HBO Max 应用程序。不再在浏览器选项卡之间切换。只需直接从 Dock 启动 Clicker for HBO Max 即可开始狂欢。 HBO Max 客户端 Clicker for HBO Max 下载 Clicker for HBO Max mac版安装教程 软件下载完成后&#xff0c;双击pkg根据提示进行安装 Clic…

LineVul实验复现及相关问题

最近在复现 LineVul 这篇文章的实验&#xff0c;本文主要用于简化文章复现流程和记录复现过程中出现的问题。 1 安装依赖环境 pip install gdown pip install transformers pip install captum pip install torch torchvision torchaudio pip install numpy pip install tqdm…

Jmeter性能测试(三)

token鉴权处理 1、添加json提取器 2、写jsonpath表达式在响应Body中提取鉴权token token&#xff1a;变量名&#xff0c;可以直接引用 $…token&#xff1a;token数据在响应中的字段名称&#xff0c;根据自己情况写就行 3、将提取出来的token添加到请求头中 重点&#xff…

基于centos7的Linux虚拟机系统安装jdk宝宝级教学

我放在opt文件夹中的soft文件夹中的Java文件夹里面 创建opt文件夹 mkdir opt 进入opt文件夹 cd opt 创建 soft文件夹 mkdir soft 进入soft文件夹 cd soft 创建Java文件夹 mkdir java 下载链接 https://www.oracle.com/java/technologies/javase/javase-jdk8-downlo…

【深度学习】Diffusion扩散模型原理解析1

1、前言 diffusion&#xff0c;这几年一直很火的模型&#xff0c;比如这段时间在网上的文生图大模型——Stable diffusion。就是以diffusion作为基底模型&#xff0c;但由于该模型与VAE那边&#xff0c;都涉及了较多了概率论知识&#xff0c;实在让人望而却步。所以&#xff0…

luceda ipkiss教程 67:修改器件端口名

如果要替换线路中的器件&#xff0c;但是要替换的器件端口名称又不一样&#xff0c;那该怎么办呢&#xff1f;去对应改线路中端口的名称太过繁琐&#xff0c;这就需要需要器件的端口名&#xff0c;如&#xff1a; 改y分束器的端口名 改了端口名称&#xff0c;线路中的器件就可…

【大学物理】东北大学-马文蔚听课笔记

4.1刚体的定轴转动_哔哩哔哩_bilibili 此笔记为课堂学习笔记~ 4.1刚体的定轴转动 基本教学要求 什么时刚体呢&#xff1f; 研究刚体运动切口 平动&#xff1a;刚体中所有的点的运动轨迹都完全相同。 转动&#xff1a;分为&#xffe5;定轴转动和非定轴转动 刚体转动的角速度…

Axure实现菜单抽屉效果

Axure是怎么实现如下效果的&#xff1f; 菜单打开和收起侧边栏菜单抽屉效果 实现效果 两级菜单&#xff0c;点击菜单收起其他菜单&#xff0c;打开当前菜单。 实现原理 单击一级菜单时&#xff0c;1&#xff09;切换当下二季菜单的显示/隐藏状态 2&#xff09;隐藏其他菜单…

MultiBoot 和 QuickBoot

目录 MultiBoot简介MultiBoot 实现方式设置 bitstream 属性使用 ICAPE2 原语WBSTAR 寄存器定义 MultiBoot 工作流程生成mcs固化文件 Tcl 指令Fallback状态寄存器MultiBoot 正常加载状态看门狗1超时状态看门狗2超时状态CRC 错误和无 DESYNC 命令IDCODE 错误状态CRC 错误状态 Wat…

0510_IO5

练习题&#xff1a; #include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <semaphore.h>#incl…

判断字符是否唯一——力扣

面试题 01.01. 判定字符是否唯一 已解答 简单 相关标签 相关企业 提示 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s "leetcode" 输出: false 示例 2&#xff1a; 输入: s "abc" 输出: true…

【LLM 论文】UPRISE:使用 prompt retriever 检索 prompt 来让 LLM 实现 zero-shot 解决 task

论文&#xff1a;UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation ⭐⭐⭐⭐ EMNLP 2023, Microsoft Code&#xff1a;https://github.com/microsoft/LMOps 一、论文速读 这篇论文提出了 UPRISE&#xff0c;其思路是&#xff1a;训练一个 prompt retri…