构造、清理、拷贝和移动简单实例

news2024/9/20 1:00:06

Complex 复数类

显示地写出构造、清理、拷贝和移动。

Complex类

class Complex
{
private:
	double real = 3;      //复数的实部
	double imag = 4;    //复数的虚部
public:
	Complex();	 			        /*无参构造*/
	Complex(double a, double b);	/*有参构造*/
	Complex(Complex& Z);            /*拷贝构造*/
	Complex(Complex&& Z);           /*移动构造*/
	~Complex();                     /*析构函数*/
	Complex& operator = (Complex& Z);  /*拷贝赋值*/
	Complex& operator = (Complex&& Z); /*移动赋值*/
	void Complex_Printf(void);
};

Complex类实现

/*无参构造*/
Complex::Complex()
{
	cout << "无参构造:";
}
/*有参构造*/
Complex::Complex(double a, double b) :real(a), imag(b)
{
	cout << "有参构造:";
}
/*拷贝构造*/
Complex::Complex(Complex& Z) :real(Z.real), imag(Z.imag)
{
	cout << "复制构造:";
}
/*移动构造*/
Complex::Complex(Complex&& Z) :real(Z.real), imag(Z.imag)
{
	cout << "移动构造:";
}
/*析构函数*/
Complex::~Complex()
{
	cout << "析构函数" << endl;
}
/*拷贝赋值*/
Complex& Complex::operator = (Complex& Z)
{
	real = Z.real;
	imag = Z.imag;
	cout << "拷贝赋值:";
	return *this;
}
/*移动赋值*/
Complex& Complex::operator = (Complex&& Z)
{
	real = Z.real;
	imag = Z.imag;
	cout << "移动赋值:";
	return *this;
}
void Complex::Complex_Printf(void)
{
	cout << real << " + " << imag << "i" << endl;
}

测试:

#include "Complex.h"

#include <iostream>
using namespace std;

Complex GetComplex()
{
	//	Complex Z1{ 2, 5 };
	Complex Z2{ 4, 8 };
	return Z2;
}


int main(void)
{
	Complex Z1;/*无参构造*/
	Z1.Complex_Printf();
	Complex Z2 = { 2, 5 };/*有参构造*/
	Z2.Complex_Printf();
	Complex Z3 = { Z1 };/*拷贝构造*/
	Z3.Complex_Printf();
	Z3 = Z2;  /*拷贝赋值*/
	Z3.Complex_Printf();
	Complex Z4 = move(Z1);   /*移动构造*/
	Z4.Complex_Printf();
	Z4 = GetComplex(); /*移动赋值*/
	Z4.Complex_Printf();
	/*std:move() 强制变成右值*/
}

结果:

Complex1

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker 中给命令起别名

docker 的有些命令特别复杂&#xff0c;我们可以给它设置别名简化输入&#xff0c;就不用每次都输入那么多了&#xff01;&#xff01;&#xff01; 1. 进入 .bashrc 中修改配置&#xff08; .bashrc 是root下的隐藏文件&#xff09; cd /rootvim .bashrc2. 在 .bashrc 中加入…

Java架构师系统相关与性能评价

目录 1 导学2 计算机语言3 多媒体4 系统工程2 性能指标3 性能评价方法4 阿姆达尔解决方法想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 计算机语言 计算机语言是人与计算机之间交流的桥梁,它们帮助人们编写程序并让计算机理解执行。计算机语言可以分为不同…

【算法练习Day31】单调递增的数字买卖股票的最佳时机含手续费监控二叉树

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 单调递增的数字买卖股票的最…

【爬虫】python打包可执行程序(ui界面制作完成后)

1.安装pyinstaller pip install pyinstaller可能出现连接超时安装不上的情况,可以切换源进行下载 pip install -i http://pypi.douban.com/simple/ pyinstaller2.打包程序 pyinstaller xxxxx.py --noconsole --hidden-import PySide6.QtXml

锐捷云课堂主机 默认口令 目录遍历漏洞

输入默认账号密码admin/admin,成功登录 构造payload&#xff0c;并访问&#xff1a; /pool/目录遍历漏洞&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法…

电子器件 电容的参数、选型与使用技巧

一、参数 最重要的参数有五个&#xff0c;分别是精度、温度系数、耐压、温度范围和ESR。 1.1 精度 电容和电阻不同&#xff0c;电阻精度可以做到高于 0.1%&#xff0c;而电容的话 5% 精度非常高的了。一般为 5%&#xff0c;10%&#xff0c;25% 等。 1.2 温度系数 电容的电…

Graalvm-21 Windows初体验

前言 除了最新新出的jdk21以外&#xff0c;oracle还推出了重磅的graalvm-jdk-21。这个graalvm可以把java代码编译为本地执行文件&#xff0c;就是把原来的jar包直接打成exe。并且使用打完的exe占用的内存资源更小&#xff0c;启动速度更快&#xff0c;非常适合云平台部署&#…

仓库管理系统源代码集合,带图片展示和网站演示

目录 1、ModernWMS2、GreaterWMS3、kopSoftWMS4、SwebWMS5、若依wms6、jeewms 1、ModernWMS 体验地址&#xff1a;https://wmsonline.ikeyly.com 简易完整的仓库管理系统 该库存管理系统是&#xff0c;我们从多年ERP系统研发中总结出来的一套针对小型物流仓储供应链流程。 简…

crs 维护模式 exclusive mode

How To Validate ASM Instances And Diskgroups On A RAC Cluster (When CRS Does Not Start). (Doc ID 1609127.1)​编辑To Bottom [rootrac1 ~]# ps -ef|grep grid root 2477 1 1 20:47 ? 00:00:51 /opt/oracle.ahf/jre/bin/java -server -Xms32m -Xmx64…

JavaScript控制流程简介

目录 条件语句 if语句 else if语句 else语句 循环语句 for循环 while循环 do...while循环 switch语句 总结 在编程中&#xff0c;控制流程是指程序执行的顺序&#xff0c;即代码按照何种方式被执行。JavaScript作为一种强大的脚本语言&#xff0c;具备了灵活的控制流…

VScode 调试 linux内核

VScode 调试 linux内核 这里调试的 linux 内核是通过 LinuxSD卡(rootfs)运行的内核 gdb 命令行调试 编辑 /home/tyustli/.gdbinit 文件&#xff0c;参考 【GDB】 .gdbinit 文件 set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit在 lin…

uniapp的一些总结

目录 前言 解决方案 1. 跨平台开发 2. Vue.js生态 3. 组件库 4. 自定义组件 5. Native能力 6. 插件生态 7. 性能优化 写法 1. 模板&#xff08;Template&#xff09; 2. JavaScript 3. 样式&#xff08;Style&#xff09; 代码 高质量 结论 事件 API 1. 获取…

二叉树:有了如此高效的散列表,为什么还需要二叉树?

文章来源于极客时间前google工程师−王争专栏。 上一节我们学习了树、二叉树以及二叉树的遍历&#xff0c;今天我们再来学习一种特殊的的二叉树&#xff0c;二叉查找树。二叉查找树最大的特点就是&#xff0c;支持动态数据集合的快速插入、删除、查找操作。 我们之前说过&…

MODBUS-RTU从站通信(SMART PLC作为MODBUS-RTU从站)

SMART PLC作为MODBUS-RTU主站通信请参考下面文章链接: 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客文章浏览阅读2.5k次,点赞5次,收藏10次。MODBUS通讯非常简单、应用也非常广泛,有些老生常谈的问题,这里不再赘述,感兴趣的可以参看…

【394.字符串解码】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:string decodeString(string s) {stack<string> s1;s1.push("");stack<int> s2;int i 0, n s.size();while (i < n){//1.如果是数字入…

听GPT 讲Rust源代码--library/std(6)

题图来自 Why you should use Python and Rust together[1] File: rust/library/std/src/sys/unix/thread_parking/netbsd.rs 文件netbsd.rs位于Rust源代码的rust/library/std/src/sys/unix/thread_parking目录下。该文件是Rust标准库中用于Unix操作系统的线程等待和唤醒机制的…

如何做好一次代码审查,什么样是一次优秀的代码审查,静态代码分析工具有哪些

代码审查是确保代码质量、提升团队协作效率、分享知识和技能的重要过程。以下是进行优秀代码审查的一些指南&#xff1a; 如何做好代码审查&#xff1a; 理解代码的背景和目的&#xff1a; 在开始审查前&#xff0c;确保你了解这次提交的背景和目的&#xff0c;这有助于更准确…

pycharm运行R语言脚本(win10环境下安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4 检验是否安装成功&#xff1a;5.安装需要的library6.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&am…

SolidWorks2020详细步骤安装教程

SolidWorks 2020 提供了许多增强和改进功能&#xff0c;其中大多数是直接针对客户要求而做出的增强和改进,这些增强功能可以帮助您加速和改进产品开发流程。从概念设计到制造产品&#xff0c;设计、模拟、制造和协作方面的改进让您可以使用新的工作流程来缩短上市时间和提高产品…