首页 > 编程语言 >原型模式--C++实现

原型模式--C++实现

时间:2023-11-02 12:33:53浏览次数:30  
标签:Compute -- len return int 原型 C++ compute const

浅克隆

#include<iostream>
#include<algorithm>

using namespace std;

//计算类
class Compute {
public:
	int* p;
	int len;//向量长度
	Compute(int len);
	Compute(const Compute &compute);//构造函数
	~Compute();//析构函数
	int operator[](int i) const {
		return p[i];
	}

	int& operator[](int i) {
		return p[i];
	}

	int length()const {
		return len;
	}
};

//各种函数的实现
Compute::Compute(int len) :len(len) {
	p = (int*)calloc(len, sizeof(int));
}

Compute::Compute(const Compute& compute) {
	this->len = compute.len;
	//this->p = (int*)calloc(len, sizeof(int));
	//memcpy(this->p, compute.p, len * sizeof(int));

	this->p = compute.p;
}

Compute::~Compute() {
	free(p);
}

void display(const Compute &compute) {
	int len = compute.length();
	for (int i = 0; i < len; i++) {
		if (i == len - 1) {
			cout << compute[i] << endl;
		}
		else {
			cout << compute[i] << " ,";
		}
	}
}



int main() {
	Compute c1(10);
	for (int i = 0; i < 10; i++) {
		c1[i] = i;
	}

	Compute c2 = c1;//浅克隆

	c1[7] = 3;
	c1[4] = 6;

	cout << "浅克隆:" << endl;

	cout << "c1的数据:" << endl;
	display(c1);

	cout << "c2的数据:" << endl;
	display(c2);

	return 0;
}

深克隆

#include<iostream>
#include<algorithm>

using namespace std;

//计算类
class Compute {
public:
	int* p;
	int len;//向量长度
	Compute(int len);
	Compute(const Compute &compute);//构造函数
	~Compute();//析构函数
	int operator[](int i) const {
		return p[i];
	}

	int& operator[](int i) {
		return p[i];
	}

	int length()const {
		return len;
	}
};

//各种函数的实现
Compute::Compute(int len) :len(len) {
	p = (int*)calloc(len, sizeof(int));
}

Compute::Compute(const Compute& compute) {
	this->len = compute.len;
	this->p = (int*)calloc(len, sizeof(int));
	memcpy(this->p, compute.p, len * sizeof(int));
}

Compute::~Compute() {
	free(p);
}

void display(const Compute &compute) {
	int len = compute.length();
	for (int i = 0; i < len; i++) {
		if (i == len - 1) {
			cout << compute[i] << endl;
		}
		else {
			cout << compute[i] << " ,";
		}
	}
}



int main() {
	Compute c1(10);
	for (int i = 0; i < 10; i++) {
		c1[i] = i;
	}

	Compute c2 = c1;//深克隆

	c1[7] = 3;
	c1[4] = 6;

	cout << "深克隆:" << endl;

	cout << "c1的数据:" << endl;
	display(c1);

	cout << "c2的数据:" << endl;
	display(c2);

	return 0;
}

标签:Compute,--,len,return,int,原型,C++,compute,const
From: https://www.cnblogs.com/liuzijin/p/17804590.html

相关文章

  • samba部署
    macos原生对ftp支持不是那么友好,samba支持还可以,本文介绍samba安装,并带有文件删除自带保留策略。 [root@ftp-serversamba]#lslmhostssmb.confsmb.conf.examplesmb.d[root@ftp-serversamba]#catsmb.conf[global]workgroup=BIGCLOUDnetbiosname=ZZSRV2security=......
  • 阿里低代码引擎 | LowCodeEngine - 如何将新组件库接入物料,以TDesign为例
    阿里低代码引擎默认提供了以antd为例的物料,并搭建了以antd为物料的示例demo,但实际中我们使用的不一定就是antd,有可能是别的组件库,也有可能是自己公司的组件库,这里就以自己为例告诉大家如何将新组件库接入阿里低代码引擎的物料中,以腾讯的组件库tdesign为例。先看阿里低代码引擎的d......
  • python爬虫数据存进mysql数据库
    一、安装mysql和mysqlworkbench我已经在电脑上安装了最新的mysql8.2.0,配置好环境变量,在命令提示符中以管理员的身份初始化并成功启动mysql数据库。前期因为以前的mysql没有卸载干净,导致mysql一直无法启动服务。所以一定要保证以前的mysql卸载干净才能重新安装,以前没有安装过的......
  • 提交GitLab代码自动触发jenkins运行
    利用jenkins和gitlab的webhook结合,实现提交代码之后,自动触发jenkins的构建1、插件安装首先jenkins需要安装两个gitlab的插件分别为:(GenericWebhookTriggerPlugin)和(gitlab)。安装完成以后jenkins的GenericWebhookTrigger配置Token。2、在gitlab设置webhook设置前先配置一下GitLab......
  • C语言经典练习题1
    1、题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第了个人大2岁,问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数......
  • 无涯教程-H2数据库 - 简介
    H2是开源的轻量级Java数据库,它可以嵌入Java应用程序中或以客户端(Client)-服务器(Server)模式运行,H2数据库主要可以配置为内存数据库运行,这意味着数据将不会持久存储在磁盘上,由于具有嵌入式数据库,因此它不用于生产开发,而主要用于开发和测试。可以在嵌入式模式或服务器模式下使用......
  • 刘铭诚:11.2美元黄金、期货原油行情走势分析及日内交易策略布局
    昨夜黄金受美元指数上涨导致下跌,低点给到1969.7一线,刘铭诚给出的防守1973-1970区域多单目前拿到1987一线,思路策略精准无误!今日周四,白盘黄金价格还是关注1992以及2000关口阻力,另外4小时布林带中轨与MA30均线粘合承压位置在1990一线,而SAR停损转向指标向下发展至1995位置,日内这两......
  • JS加密/解密之jsjiami在线js加密的效率问题
    故事背景 经常有客户反馈,v7加密的效率比v6低,但是安全性更好。这里我给大家科普一下关于jsjiami的优化诀窍。示例源代码//伪代码while(1){varname=‘张三’}优化后var_name='张三';while(1){varname=_name}优化原理相信很多朋友会疑惑这两者的区别是什......
  • API管理平台搭建过程问题总结​
    API管理的定义和好处API管理是指对应用程序编程接口(API)进行集中管理、监控和维护的过程。API是用于不同软件之间进行通信和交互的编程接口,通过API管理可以有效地管理和控制API的使用、访问和安全性。API管理的好处包括:1、提高开发效率:通过API管理,开发团队可以更好地共享和重用API,避......
  • 计算云服务中裸金属服务器(BMS)的一些总结
    概念简单的说就是物理机的线上作用服务,它兼具虚拟机的弹性和物理机的性能,在ECS上性能更加优化。相对于其他PC机的一些优势:安全可靠性能卓越敏捷的部署效率云服务和解决方案可以快速集成总的来说就是具有更快的服务速度,响应速度更快。应用场景核心数据库高性能计算B......