1、array类

(1)、代码如下:

#include<iostream>usingnamespacestd;classArray{public:Array(intcount);Array(constArray&t);~Array();public:voidsetData(inti,intdata);intgetData(inti);intlength();private:intlen;int*p;};Array::Array(intcount){len=count;p=newint[len];}//有指针,的进行深拷贝;Array::Array(constArray&t){len=t.len;p=newint[len];for(inti=0;i<t.len;i++){p[i]=t.p[i];}}Array::~Array(){if(p){delete[]p;p=NULL;}}voidArray::setData(inti,intdata){p[i]=data;}intArray::getData(inti){returnp[i];}intArray::length(){returnlen;}intmain(void){Arrayarray(10);inti;for(i=0;i<array.length();i++){array.setData(i,i);}for(i=0;i<array.length();i++){cout<<array.getData(i)<<"";}cout<<endl;Arrayarray1=array;for(i=0;i<array1.length();i++){cout<<array1.getData(i)<<"";}cout<<endl;return0;}

(2)、运行结果:


2、string类

(1)、代码如下:

#include<iostream>#include<stdio.h>#include<string.h>usingnamespacestd;classMyString{public:friendostream&operator<<(ostream&out,constMyString&s1);friendistream&operator>>(istream&in,MyString&s2);MyString(intlen=0){//默认参数看我们是否自己开辟大小的空间;if(len!=0){m_len=len;m_p=newchar[m_len+1];memset(m_p,0,m_len);}else{m_len=0;m_p=newchar[m_len+1];strcpy(m_p,"");}}MyString(constchar*p){if(p==NULL){m_len=0;m_p=newchar[m_len+1];strcpy(m_p,"");}else{m_len=strlen(p);m_p=newchar[m_len+1];strcpy(m_p,p);}}MyString(constMyString&s){m_len=s.m_len;m_p=newchar[m_len+1];strcpy(m_p,s.m_p);}MyString&operator=(constMyString&t){if(m_p){delete[]m_p;m_p=NULL;m_len=0;}m_len=t.m_len;m_p=newchar[m_len+1];strcpy(m_p,t.m_p);return*this;}~MyString(){if(m_p){delete[]m_p;m_p=NULL;m_len=0;}}public:MyStringoperator=(constchar*p){if(m_p){delete[]m_p;m_p=NULL;m_len=0;}if(p==NULL){m_len=0;m_p=newchar[m_len+1];strcpy(m_p,"");}else{m_len=strlen(p);m_p=newchar[m_len+1];strcpy(m_p,p);}return*this;}char&operator[](intindex){returnm_p[index];}booloperator==(constchar*p)const{//判断与字符串是否相等,看长度和里面的内容是否相等!!!if(p==NULL){if(m_len==0){returntrue;}else{returnfalse;}}else{if(m_len==strlen(p)){return!strcmp(m_p,p);}else{returnfalse;}}}booloperator==(constMyString&s)const{if(m_len!=s.m_len){returnfalse;}return!strcmp(m_p,s.m_p);}booloperator!=(constchar*p)const{return!(*this==p);}booloperator!=(constMyString&s)const{return!(*this==s);}intoperator<(constchar*p)const{returnstrcmp(m_p,p);}intoperator<(constMyString&s)const{returnstrcmp(m_p,s.m_p);}intoperator>(constchar*p)const{returnstrcmp(p,m_p);}intoperator>(constMyString&s)const{returnstrcmp(s.m_p,m_p);}//怎么样把类的指针露出来.public:char*c_str(){returnm_p;}constchar*c_str2(){returnm_p;}intlength(){returnm_len;}private:intm_len;char*m_p;};ostream&operator<<(ostream&out,constMyString&s1){out<<s1.m_p;returnout;}istream&operator>>(istream&in,MyString&s2){in>>s2.m_p;returnin;}intmain(void){MyStrings1;MyStrings2("s2");MyStrings3=s2;MyStrings4="s444444444444";s4="s22222222222";s4=s2;s4[1]='3';printf("%c\n",s4[1]);//测试[]改变值了吗?cout<<s4<<endl;if(s2=="s2"){cout<<"相等"<<endl;}else{cout<<"不相等"<<endl;}s3="aaa";intflag=(s3<"bbb");if(flag<0){cout<<"s3小于bbb"<<endl;}else{cout<<"s3大于bbb"<<endl;}s3="adasf";strcpy(s3.c_str(),"sga");cout<<s3<<endl;MyStrings9(100);//默认输入要开辟字符串的空间大小;cout<<"请输入一个数字:";cin>>s9;cout<<s9<<endl;return0;}

(2)、运行结果: