第二课的课后练习
来源:互联网 发布:淘宝产品分类 编辑:程序博客网 时间:2024/06/14 16:38
#pragma once#include<iostream>using namespace std;class QSeqList{private:int *Data;int Size;int Len;public:QSeqList(int Count);QSeqList(QSeqList &a);QSeqList(QSeqList &&a);QSeqList();~QSeqList(void);void Create(int Count);void Destroy(void);void Insert(int Pos, int data);void Cout(void);QSeqList operator+(QSeqList q);QSeqList &operator=(QSeqList q);QSeqList &operator=(QSeqList &&q);};#include "stdafx.h"#include "QSeqList.h"QSeqList::QSeqList()//默认构造函数{}QSeqList::QSeqList(int Count)//带参构造函数{Size=Count;Data=new int[Size];Len=0;}QSeqList::QSeqList(QSeqList &q)//拷贝构造函数{Size=q.Size;Len=q.Len;Data=new int[Size];for(int i=0;i<Len;i++)Data[i]=q.Data[i];cout<<"copy"<<endl;} QSeqList::QSeqList(QSeqList &&q)//转发构造函数{Size=q.Size;Len=q.Len;Data=q.Data;q.Data=nullptr;}QSeqList::~QSeqList(void){if(Data!=nullptr){delete Data;Data=nullptr;}Size=0;Len=0;}void QSeqList::Create(int Count){Size=Count;Data=new int[Size];Len=0;}void QSeqList::Destroy(void){delete Data;Data=nullptr;Size=0;Len=0;}void QSeqList::Insert(int Pos, int data){if(Size==Len){Data=(int *)realloc(Data,(Size+10)*sizeof(int));Size+=10;}for(int i=Len-1;i>=Pos;i--)Data[i+1]=Data[i];Data[Pos]=data;Len++;}void QSeqList::Cout(void){for(int i=0;i<Len;i++)cout<<Data[i]<<endl;}//将加号重载为两个顺序表相连QSeqList QSeqList::operator+(QSeqList q){QSeqList r(q.Size+Size);for(int i=0;i<Len;i++)r.Insert(i,Data[i]);for(int i=0;i<q.Len;i++)r.Insert(r.Len,q.Data[i]);return r;}//将等号重载为拷贝构造函数,&是将函数返回类型转换为引用类型QSeqList & QSeqList::operator=(QSeqList q){Size=q.Size;Len=q.Len;Data=new int[Size];for(int i=0;i<q.Len;i++)Data[i]=q.Data[i];cout<<"运算符重载,拷贝"<<endl;return *this;}//将等号(再次)(第二次重载)重载为转发构造函数QSeqList & QSeqList::operator=(QSeqList &&q){Size=q.Size;Len=q.Len;Data=q.Data;q.Data=nullptr;return *this;}// Ex2.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include"QSeqList.h"int _tmain(int argc, _TCHAR* argv[]){QSeqList a(100);for(int i=0;i<10;i++)a.Insert(i,i*i);a.Cout();QSeqList b;b=a;//先自动调用拷贝构造函数,然后再调用运算符重载函数b.Cout();b.Insert(3,1000);b.Cout();system("PAUSE");return 0;}
0 0
- 第二课的课后练习
- Welcome to JAVA!(第二课课后练习)
- 第一课的课后练习
- 第三课的课后练习
- C++编程思想第二章课后练习
- 数据库编译第二章课后练习
- 第二章 上级练习+课后简答
- 第十二课,课后练习
- 第二章课后练习:第二大题(问答题)
- 我的课后练习一
- SCJP第二课课后笔记
- Linux私房菜 课后练习第二~六章
- 《Python核心编程》中文第二版课后练习2.21答案
- 《Python核心编程》中文第二版课后练习3.8答案
- 学习笔记:《jQuery基础教程》第四版第二章课后练习
- 《C语言程序设计(第二版新版)》课后练习
- Primer Plus 12章课后编程练习 第二题
- Android权威指南第二版课后练习2.10
- iOS 导出证书.p12文件
- Java多线程之捕获异常
- 单调队列
- Annotation(三)——Spring注解开发
- 后期生成事件之拷贝生成后的dll
- 第二课的课后练习
- android.graphics.Paint方法setXfermode (Xfermode x...
- liunx c语言制作 微型web服务器 300行代码
- 动态规划的基本概念和最优化原理
- CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
- 打包时出现No matching provisioning profile found错误的解决方法
- 初步研究3D Touch
- Intent.ACTION_GET_CONTENT用法
- SQLite3环境配置以及SQLite Expert Professional 3安装