第二课的课后练习

来源:互联网 发布:淘宝产品分类 编辑:程序博客网 时间: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
原创粉丝点击