C++

#include "StdAfx.h"
#include<iostream>
#include<iomanip>
#include "array.h"
using namespace std;
Array::Array(int arraySize)
{
size=(arraySize>0?arraySize:10);
ptr=new int[size];
for(int i=0;i<size;i++)
{
ptr[i]=0;//指针与数组名可以互换,ptr[i]表示*(ptr+i),其实数组名是常指针
}
}
Array::Array(const Array &arrayToCoppy):size(arrayToCoppy.size)
{
ptr=new int[size];//用new获取新数组所需空间,把new返回的指针赋给数据成员ptr
for(int i=0;i<size;i++)
{
ptr[i]=arrayToCoppy.ptr[i];
}
}
Array::~Array()
{
delete [] ptr;
}
int Array::getSize() const
{
return size;
}
const Array &Array::operator=(const Array &right)
{
if(right!=*this)//测试了是否是自我赋值,若是,则跳过赋值操作,避免自我赋值
{
if(size!=right.size)
{
delete[] ptr;
size=right.size;
ptr=new int [size];
}
for(int i=0;i<size;i++)
ptr[i]=right.ptr[i];
}
return *this;


}
bool Array::operator==(const Array &right) const
{
if(size!=right.size)
return false;
for(int i=0;i<size;i++)
{
if(ptr[i]!=right.ptr[i])
return false;
}
return true;
}


int& Array::operator [](int subscript)
{
if(subscript>=0&&subscript<size)
return ptr[subscript];
else
{
cout<<"error subscript:"<<subscript<<"out of range"<<endl;
exit(1);


}


}
const int& Array::operator[](int subscript) const
{
if(subscript>=0&&subscript<size)
return ptr[subscript];
else
{
cout<<"error subscript:"<<subscript<<"out of range"<<endl;
exit(1);


}
}
istream &operator>>(istream &input,Array &a)
{
for(int i=0;i<a.size;i++)
input>>a.ptr[i];
return input;//可以连续输入
}
ostream &operator<<(ostream &output,const Array &a)
{int i=0;
for( i=0;i<a.size;i++){
output<<setw(12)<<a.ptr[i];
if((i+1)%4==0)
output<<endl;
}
if(i%4!=0)
output<<endl;
return output;//可以连续输出


}


#include <iostream>
#include<iomanip>
#include "array.h"
using namespace std;
int main()
{
Array integers1(7);
Array integers2;
cout<<"size of array integers1 is"
<<integers1.getSize()
<<"after initialization:\n"
<<integers1;
cout<<"size of array integers2 is"
<<integers2.getSize()
<<"after initialization:\n"
<<integers2;
cout<<"input 17 integers:";
cin>>integers1>>integers2;
cout<<"integers1"<<integers1
<<"integers2"<<integers2;
cout<<"\nevaluating:integers1!=integers2\n";
if(integers1!=integers2)
cout<<"integers1!=integers2"<<endl;
Array integers3(integers1);
cout<<"size of array integers3 is"
<<integers3.getSize()
<<"after initialization:\n"
<<integers3;
cout<<"\nassigning integers 2 to integers1:\n";
integers1=integers2;//调用integers1.operator(integers2)
cout<<"integers1"<<integers1<<"integers2"<<integers2;
if(integers1==integers2)
{
cout<<"integers1==integers2"<<endl;
}
cout<<"integers1[5] is"<<integers1[5]<<endl;
integers1[5]=1000;
cout<<"integers1[5] is"<<integers1[5];
integers1[15]=1000;
return 0; 
}


#include<iostream> 
using namespace std; 
class stu_age 
{ 
public: 
 stu_age operator+=(const stu_age&); 
public: 
 friend istream;
 friend istream& operator >>(istream& in, stu_age &s)
 {
  in >> s.year >> s.mouth >> s.day; 
  return in;
 }
 
 stu_age(): 
 year(1980),mouth(1),day(1){} 
 // stu_age(istream &is){is >> *this;} 
 void output() {cout<<year<<"year"<<mouth<<"mouth"<<day<<"day"<<'\n';} 
private: 
 int year; 
 int mouth; 
 int day; 
}; 
stu_age operator+(const stu_age&,const stu_age&); 

stu_age n;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值