C++

来源:互联网 发布:网络 全球 编辑:程序博客网 时间:2024/06/13 12:31
#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;


原创粉丝点击