C++程序设计-实验4 运算符重载
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int size;
public:
CArray(); //缺省构造函数
CArray(int* p_a,int s); //构造函数
CArray(const CArray &r_other);//复制构造函数
~CArray();//析构函数
int operator[](int pos) const; //访问数组元素值的下标运算符重载函数
int& operator[](int pos); //设置数组元素值的下标运算符重载函数
Carray &operator=(const Carray &other)//赋值运算符“=”重载函数
Carray &operator+(const Carray &other) //加运算符“=”重载函数
Carray &operator-(const Carray &other) //减运算符“=”重载函数
}
int main(){
ABC obj(10,20,30);
cout<<obj;
return 0;
}
2.设计并实现一个日期类Date,要求:
(1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。
(2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、日可以是一位也可以是两位数据。
(7)写出主函数对该类进行测试。
3.下面是一个数组类CArray的定义。要求:
(1)在此基础上增加print()成员函数打印数组,
(2)重载“=”、“+”、“-”运算符使之能对该数组类对象进行赋值、加减运算。
(3)写出主函数对该类进行测试。
class CArray
{private:
int* p_arr;
实验
一、实验目的
1.掌握运算符重载的规则。
2.掌握几种常用的运算符重载的方法。
3.了解转换构造函数的使用方法。
二、实验内容
1.阅读下面的程序,写出程序运行的结果。
(1)
#include<iostream>
using namespace std;
class ABC{
int Fra Baidu bibliotek,b,c;
public:
ABC(int x,int y,int z):a(x),b(y),c(z){}
void print() const;
};
CArray:: CArray() { p_arr=NULL; size=0;}
CArray:: CArray(int* p_a,int s)
{
if(s>0)
{ size=s; p_arr=new int[size];
for(int i=0;i<size;i++) p_arr[i]=p_a[i];
}
}
CArray::~CArray()
{ if(p_arr) delete[] p_arr;
p_arr=NULL; size=0;
}
int CArray::operator[](int pos) const
{
if(pos>=size) return p_arr[size-1];
if(pos<0) return p_arr[0];
return p_arr[pos];
}
int& CArray::operator[](int pos)
{
if(pos>=size) return p_arr[size-1];
if(pos<0) return p_arr[0];
return p_arr[pos];
}
friend ostream &operator<<(ostream &out,ABC& f);
};
ostream &operator<<(ostream &out,ABC& f)
{
out<<"a="<<f.a<<endl<<"b="<<f.b<<endl<<"c="<<f.c<<endl;
return out;
(3)可以动态地设置年、月、日。
(4)可以用运算符= =、!=、<和>对两个日期进行比较。
(5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作
(6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。
}
Else
{ p_arr=NULL; size=0; }
}
CArray::CArray(const CArray &r_other)
{ size=r_other.size;
if(size)
{ p_arr=new int[size];
for(int i=0;i<size;i++) p_arr[i]=r_other.p_arr[i];
public:
CArray(); //缺省构造函数
CArray(int* p_a,int s); //构造函数
CArray(const CArray &r_other);//复制构造函数
~CArray();//析构函数
int operator[](int pos) const; //访问数组元素值的下标运算符重载函数
int& operator[](int pos); //设置数组元素值的下标运算符重载函数
Carray &operator=(const Carray &other)//赋值运算符“=”重载函数
Carray &operator+(const Carray &other) //加运算符“=”重载函数
Carray &operator-(const Carray &other) //减运算符“=”重载函数
}
int main(){
ABC obj(10,20,30);
cout<<obj;
return 0;
}
2.设计并实现一个日期类Date,要求:
(1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。
(2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、日可以是一位也可以是两位数据。
(7)写出主函数对该类进行测试。
3.下面是一个数组类CArray的定义。要求:
(1)在此基础上增加print()成员函数打印数组,
(2)重载“=”、“+”、“-”运算符使之能对该数组类对象进行赋值、加减运算。
(3)写出主函数对该类进行测试。
class CArray
{private:
int* p_arr;
实验
一、实验目的
1.掌握运算符重载的规则。
2.掌握几种常用的运算符重载的方法。
3.了解转换构造函数的使用方法。
二、实验内容
1.阅读下面的程序,写出程序运行的结果。
(1)
#include<iostream>
using namespace std;
class ABC{
int Fra Baidu bibliotek,b,c;
public:
ABC(int x,int y,int z):a(x),b(y),c(z){}
void print() const;
};
CArray:: CArray() { p_arr=NULL; size=0;}
CArray:: CArray(int* p_a,int s)
{
if(s>0)
{ size=s; p_arr=new int[size];
for(int i=0;i<size;i++) p_arr[i]=p_a[i];
}
}
CArray::~CArray()
{ if(p_arr) delete[] p_arr;
p_arr=NULL; size=0;
}
int CArray::operator[](int pos) const
{
if(pos>=size) return p_arr[size-1];
if(pos<0) return p_arr[0];
return p_arr[pos];
}
int& CArray::operator[](int pos)
{
if(pos>=size) return p_arr[size-1];
if(pos<0) return p_arr[0];
return p_arr[pos];
}
friend ostream &operator<<(ostream &out,ABC& f);
};
ostream &operator<<(ostream &out,ABC& f)
{
out<<"a="<<f.a<<endl<<"b="<<f.b<<endl<<"c="<<f.c<<endl;
return out;
(3)可以动态地设置年、月、日。
(4)可以用运算符= =、!=、<和>对两个日期进行比较。
(5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作
(6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。
}
Else
{ p_arr=NULL; size=0; }
}
CArray::CArray(const CArray &r_other)
{ size=r_other.size;
if(size)
{ p_arr=new int[size];
for(int i=0;i<size;i++) p_arr[i]=r_other.p_arr[i];