c++实现int数组简单的拷贝、逆序、打印、赋值、判断相等功能

原创 2018年04月15日 16:37:35
#include<iostream>
using namespace std;


class Array
{
public:


Array()//无参构造函数
{
this->len = 0;
this->space = NULL;
cout<<"Array()"<<endl;
}


Array(int len)//有参构造函数
{
if(len<=0)
{
this->len = 0;
this->space = NULL;
}
else
{
this->len = len;
this->space = new int[len];
cout<<"创建了一个长度为"<<len<<"的数组"<<endl;
}
}


Array(const Array &another)//拷贝构造函数,把另一个数组拷贝过来
{
if(another.len>=0)
{
this->len = another.len;
//执行深拷贝
//先给新对象在堆中创建一定长度的数组
this->space = new int[this->len];
//把原对象的值赋给新对象
for(int i =0;i<this->len;i++)
{
this->space[i] = another.space[i];
}
cout<<"调用了默认拷贝构造函数"<<endl;
}
}


~Array()//析构函数
{
if(this->space != NULL)
{
delete[] this->space;//要先释放this->space指向的空间
this->space = NULL;//再干掉space这个指针
len = 0;
}
cout<<"~Array()"<<endl;
}
//重载等号操作符
void operator=(const Array &another)
{
if(another.len>=0)
{
this->len = another.len;
this->space = new int[this->len];
for(int i =0;i<this->len;i++)
{
this->space[i] = another.space[i];
}
cout<<"调用了等号操作符的复制"<<endl;
}
}
//根据索引赋值
void set(int index,int value){
if(this->space!=NULL&&index<len&&index>=0)
{
this->space[index] = value;
}
}
//打印特定索引的值
int index(int index){
if(this->space!=NULL&&index<len&&index>=0)
{
return this->space[index]; 
}
}
//返回数组长度
int length(){
return this->len;
} 
//打印列表值,有重载的cout
void values(){
for(int i = 0;i<this->len;i++)
{
cout<<this->space[i]<<"\t";
}
cout<<endl;
}
//数组反转
void reverse()
{
int temp;
for(int i = this->len-1,j=0; j<=i;i--,j++)
{
temp = this->space[j];
this->space[j] = this->space[i];
this->space[i] = temp;
}
cout<<"调用了reverse()"<<endl;
}
//重载==运算符,!=是类似的
bool operator==(Array &another)
{
cout<<"用==操作符判断数组是否相等"<<endl;
if(this->len != another.len)
{
return false;
}
else
{
for(int i = 0;i<this->len;i++)
{
if(this->space[i] != another.space[i])
{
return false;
}
}
}
return true;
}
//重载!=
bool operator!=(Array &another)
{
cout<<"调用了!="<<endl;
if(*this == another)
{
return false;
}
else
{
return true;
}
}
//声明友元函数
friend ostream& operator<<(ostream& os,Array& a);


private:
int len;
int* space;
};
//重载的左移运算符,直观来讲就是可以使用cout打印数组
ostream& operator<<(ostream& os,Array& a)//记得返回ostream对象,不然会报段错误
{
for(int i = 0;i<a.len;i++)
{
cout<<a.space[i]<<"\t";
}
return os;
}


int main()
{
//先随便定义一个要被拷贝的数组
Array a(10);
for(int i =0;i<10;i++)
{
a.set(i,i+1);
}
a.values();


//在创建b的时候等号a,默认调用a的拷贝构造函数
Array b = a;
b.set(9,10086);
b.values();
b.reverse();
b.values();


//下面是调用等号操作符的复制,因为如果定义和赋值分开就是调用默认的等号操作符
//如果不重写默认是浅拷贝的
Array c;
c = b;
c.reverse();
c.values();


//直接用cout打印数组a
cout<<a<<endl;
cout<<"a==a:"<<(a==a)<<endl;
cout<<"a==b:"<<(a==b)<<endl;
//!=判断,巧用==反转
cout<<"a!=a:"<<(a!=a)<<endl;
cout<<"a!=b:"<<(a!=b)<<endl;
return 0;
}


//有空可以加入快排,多变量等功能,实现完整的类python的list

版权声明: https://blog.csdn.net/hiudawn/article/details/79950503

C#Winform报表与打印技术——自定义报表的实现

-
  • 1970年01月01日 08:00

(c/c++)实现逆序输出整数的几种方法

用while语句,for语句实现任意整数的逆序打印。while,do-while以及while-do类似。...
  • newer_no1
  • newer_no1
  • 2017-11-24 17:56:51
  • 896

(c++)输入10个数字,然后逆序输出。

#include #include using namespace std; int main() { int a[10]; for(int i=0;i cin>>a[i]; for(...
  • sunxuelei9543
  • sunxuelei9543
  • 2017-01-19 15:54:26
  • 811

C++中逆序输出字符串和数字

#include #include #include using namespace std; int main() { //字符串逆序 // string string1; // ...
  • wap1981314
  • wap1981314
  • 2013-03-21 16:28:00
  • 1009

打印1-100之间的素数 C++实现

打印1-100之间的素数 素数:除了1和它本身之外不能被其他数整除/* 1-100素数 #include #include using namespace std; void ma...
  • yu876876
  • yu876876
  • 2018-03-14 00:01:00
  • 38

C++程序输入0-6个整数换成星期输出

<em>C%2B%2B</em>程序设计教程.pdf 时间:2018-4-16 编写一个程序,它先将键盘上输入的...输入一个整数,输出其位数并<em>逆序</em>输出 立即下载 上传者: langwuya123 时间: ...
  • 2018年04月18日 00:00

输出素数C++

,并利用它<em>逆序</em>获取和输出素数。综合评分:5 收藏评论...<em>打印</em>1-100之间的素数 C++实现 Codeforces Round #...<em>C%2B%2B</em> 达内科技 c++ 课件 及 源码 笔记【完美...
  • 2018年04月18日 00:00

Python字符串逆序输出

Python字符串逆序输出 1、有时候我们可能想让字符串倒序输出,下面给出几种方法 方法一:通过索引的方法 方法二:借组列表进行翻转 2、分别输出字符串奇数坐标和偶数坐标的字符 最简单的方法是直接通...
  • SeeTheWorld518
  • SeeTheWorld518
  • 2015-07-04 17:58:29
  • 23741

机器学习部分书籍推荐

先说一下我看过的和正在看的一些书吧! 《数学之美》;作者吴军大家都很熟悉。这本书主要的作用是引起了我对机器学习和自然语言处理的兴趣。里面以极为通俗的语言讲述了数学在这两个领域的应用。 《Program...
  • xiangxizhishi
  • xiangxizhishi
  • 2017-12-22 18:01:25
  • 132

数串的C++解决

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数13,312,343,连成的最大整数为34331213。 如:n=4时,4个整数7,13,4,246连接成的最大整数为...
  • u013611491
  • u013611491
  • 2017-08-30 15:32:36
  • 231
收藏助手
不良信息举报
您举报文章:c++实现int数组简单的拷贝、逆序、打印、赋值、判断相等功能
举报原因:
原因补充:

(最多只允许输入30个字)