33,311
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<cstring>
using namespace std;
class stringT
{
public:
stringT(){str=NULL; }
stringT(const char* p)
{
if(p!=NULL)
{
int res=strlen(p)+1;
str=new char[res];
strcpy(str,p); // copy all to source data
}
else
{// NULL pointer
str=NULL;
}
}
~stringT()
{
if(str!=NULL)
{
delete [] str;
}
}
friend stringT operator+ (const stringT &lhs,const stringT &rhs);
void display()const;
private:
char* str;
};
void stringT::display() const
{
cout<<str<<endl;
}
stringT operator + (const stringT &lhs, const stringT &rhs)
{
int res=strlen(lhs.str)+1;
res+=strlen(rhs.str);
stringT newStr;
newStr.str=new char[res];
strcpy(newStr.str,lhs.str);
strcat(newStr.str,rhs.str);
return newStr;
}
int main()
{
stringT p1("pend"), p2("er");
stringT val=p1+p2;
val.display();
return 0;
}
//我也写了一下,第一个在ubuntu下的C++程序。
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
class string
{
public:
string(char*p);
string(const string& st);
~string();
operator const char* ()const;
friend const string operator+(const string &p1,const string &p2);
void display();
private:
char*str;
};
string::string(char*p)
{
str=(char*)malloc(strlen(p)+1);
strcpy(str,p);
}
string::string(const string& st)
{
str=(char*)malloc(strlen(st.str)+1);
strcpy(str,st.str);
}
string::operator const char* ()const
{
return str;
}
string::~string()
{
free(str);
}
const string operator+(const string &p1,const string &p2)
{
char *temp =(char *) malloc(strlen(p1.str)+strlen(p2.str)+1);
strcpy(temp,p1.str);
strcat(temp,p2.str);
string re(temp);
free(temp);
return re;
}
void string::display()
{
cout <<str <<endl;
}
int main()
{
string str1("peng"),str2("er");
cout<<str1+str2;
return 0;
}
#include <iostream>
#include <string.h>
using std::cout;
using std::endl;
class string
{
public:
string(char*p);
string(const string& st);
~string();
operator const char* ()const;
friend const string operator+(const string &p1,const string &p2);
void display();
private:
char*str;
};
string::string(char*p)
{
str=(char*)malloc(strlen(p)+1);
strcpy(str,p);
}
string::string(const string& st)
{
str=(char*)malloc(strlen(st.str)+1);
strcpy(str,st.str);
}
string::operator const char* ()const
{
return str;
}
string::~string()
{
free(str);
}
const string operator+(const string &p1,const string &p2)
{
char *temp =(char *) malloc(strlen(p1.str)+strlen(p2.str)+1);
strcpy(temp,p1.str);
strcat(temp,p2.str);
string re(temp);
free(temp);
return temp;
}
void string::display()
{
cout <<str <<endl;
}
int main()
{
string str1("peng"),str2("er");
cout<<str1+str2;
return 0;
}