学习C++时候写的一个简单Array类

原创 2004年08月04日 11:40:00

array.h
类接口

// Class automatically generated by Dev-C++ New Class wizard
/*
?* 数组的抽象数据类型,可以实现:
?* 1、下标准范围检查
?* 2、下标运算
?* 3、数组的赋值
?* 4、数组比较
?* 5、数组的输入/输出
?* 6、数组知道自身的大小
?*/
?
#ifndef ARRAY_H
#define ARRAY_H
#include

using namespace std;

class Array
{
?friend ostream &operator<<(ostream &,const Array &);//输出
?friend istream &operator>>(istream &,Array &);?//输入
?public:
???? int check();
??Array(int arraySize=10);
??Array(const Array &);
??~Array();
??int getSize() const;?//返回数组大小
??int &operator[](int);?//下标运算
? ??const Array &operator= (const Array &) ;//赋至
? ??const int operator!=(const Array &) const;?//不等?
? ??const int operator==(const Array &) const;?//不等?
?private:
???? int size;?// 数组的大小
???? int *ptr;?// 指向数组的第一个元素的指针
};

#endif // ARRAY_H

?

?

?

//类实现
// Class automatically generated by Dev-C++ New Class wizard

#include "array.h" // class's header file
#include

using namespace std;

// class constructor
Array::Array(int arraySize)
{
?size = arraySize;
?ptr = new int[size];
?assert(ptr!=0);
?memset(ptr,0,size*sizeof(int));
}

// 拷贝构造函数
Array::Array(const Array &init)
{
?size = init.size;
?ptr = new int[size];
?assert(ptr!=0);
?memset(ptr,0,size*sizeof(int));
}

// class destructor
Array::~Array()
{
?delete [] ptr;
}


//数组范围检查
int Array::check()
{
?return 1;???
}

//取得数组大小
int Array::getSize() const
{
??? return size;
}

istream &operator>> (istream &input,Array &a)
{
?for(int i=0;i??input>>a.ptr[i];
?return input;
}

//输出
ostream &operator<< (ostream &output,const Array &a)
{
?for(int i=0;i??output<?return output;
}

//下标
int &Array::operator[](int index)
{
??? if(index<0||index>size) index = 0;
?return ptr[index];
}


//重载 =?
const Array &Array::operator=(const Array &right)
{
??? if(&right!=this)
??? {
??????? if(size!=right.size)?//如果空间不同,则重新分配
??????? {
??????? ?delete [] ptr;
??????? ?size = right.size;
??????? ?ptr = new int[size];
?? ???????? assert(ptr!=0);
???? ?}
??? ?memcpy(ptr,right.ptr,size*sizeof(int));
??? }
??? return *this;
}


const int Array::operator!=(const Array &right) const
{
??? if (size!=right.size) return 1;
??? for(int i=0;i??? ?if(ptr[i]!=right.ptr[i])
??? ??return 1;

??? return 0;
}


const int Array::operator==(const Array &right) const
{
??? if (size==right.size) return 1;
??? for(int i=0;i??? ?if(ptr[i]!=right.ptr[i])
??? ??return 0;

??? return 1;
}

?

C# 作业,简单的学生管理系统(控制台)

需求描述 构建一个Student类 包括姓名、学号、分数,然后在控制台中输入N个学生的上述信息,并将信息保存到文件。 创建一个文本文件 将Student对象的信息写入到文本文件。如果该文件已存在...
  • jjhfen00
  • jjhfen00
  • 2016年01月05日 01:40
  • 2425

C#——一个简单的文件管理器

最近在紧张的学习C#,说实话对C#之前没有太多的接触过,只知道C#的特性与java很相似,接触了之后才发现C#跟java相比区别不是很多,但它是一门实现程序能力比Java还要好的语言(仅代表个人观点)...
  • u012200908
  • u012200908
  • 2015年04月05日 20:16
  • 2924

二维数组回形遍历(北大信科2015上机考试)

C:二维数组回形遍历 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍...
  • androidchanhao
  • androidchanhao
  • 2016年03月01日 16:37
  • 3686

一个让人灵光一闪的数组C++类Array设计,可以此作为范本进行其他的C++类编写

一个基于指针和重载操作符的数组类设计Array,可以进行数组范围检查,与平常看到的类而言,这个类的编写让人感觉逻辑十分清晰,以及更加可以理解面向对象程序设计理念。 Arry.h /*-----防止类头...
  • HW140701
  • HW140701
  • 2017年07月29日 16:46
  • 483

C# 常用整合的资料,NET环境下水晶报表使用总结,水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用和强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家

  • 2009年04月19日 15:23
  • 2.58MB
  • 下载

ROS的学习(十四)用C++写一个简单的接收者

打开一个终端,进入到beginner_tutorials包下面: cd ~/catkin_ws/src/beginner_tutorials      编辑文件src/listener.cpp...
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013年10月30日 20:49
  • 15689

机器人操作系统ROS Indigo 入门学习(12)——用C++语言写一个简单的发布者和订阅者

这个教程将会包含怎样用C++去写一个发布者和订阅者.   1.1写一个发布者Node “Node”是连接在ROS网络中一个可执行单元的术语.这里我们创建一个会不断广播messages...
  • u011600592
  • u011600592
  • 2016年06月29日 16:08
  • 646

机器人操作系统ROS Indigo 入门学习(14)——用C++语言写一个简单的service和client

这篇教程包括怎样去用C++写一个service和一个client.   1.1写一个Service Node 这里我们会创建一个service(“add_two_ints_server”)nod...
  • Bobsweetie
  • Bobsweetie
  • 2015年02月08日 17:30
  • 2206

机器人操作系统ROS Indigo 入门学习(12)——用C++语言写一个简单的发布者和订阅者

这个教程将会包含怎样用C++去写一个发布者和订阅者.   1.1写一个发布者Node “Node”是连接在ROS网络中一个可执行单元的术语.这里我们创建一个会不断广播messages的发布者(“...
  • Bobsweetie
  • Bobsweetie
  • 2015年02月08日 17:29
  • 3215

机器人操作系统ROS Indigo 入门学习(14)——用C++语言写一个简单的service和client

这篇教程包括怎样去用C++写一个service和一个client.   1.1写一个Service Node 这里我们会创建一个service(“add_two_ints_server”)nod...
  • roslei
  • roslei
  • 2016年11月28日 10:39
  • 363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习C++时候写的一个简单Array类
举报原因:
原因补充:

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