因为我最近也在学习c++的东西,学了大约一个月吧,所以看见你的这篇帖子,觉得这两道题挺好的,所以就给你写了代码,昨天晚上给你写,但是写的时候却遇到了一点问题,晚上躺在床上想明白了问题出在了哪里,早上起来的时候把问题解决了。毕竟才学了一个月的c++,所以代码风格什么的可能不是很好,就凑合着看吧!
说明一下:我觉得Cstring类中的那个size没什么用,所以我想的时候就没写size,为了看一下结果,我自己又加了一个show()函数(当然了,你在重新整理时可以按照自己的意思,把我加的一些东西给删除掉),如果你用的是vc6.0版本的编译器的话,会出现问题,所以建议使用更高版本的编译器,比如用vs2010。好了,废话就不多说了,如有问题,直接回复在这篇帖子里就可以了!
代码如下:
程序代码:
# include <stdlib.h>
# include <string.h>
# include <iostream>
using namespace std;
class Cstring
{
private:
char *str;
public:
Cstring()
{
str = new char[10];
if(str)
strcpy(str, "Hello");
}
Cstring(char *p)
{
str = new char[strlen(p)+1];
if(str)
strcpy(str, p);
}
Cstring(const Cstring &cs)
{
str = new char[strlen(cs.str)+1];
if(str)
strcpy(str, cs.str);
}
Cstring operator +(const Cstring &cs)
{
Cstring temp;
temp.str = new char[strlen(str)+strlen(cs.str)+1];
strcpy(temp.str, str);
strcat(temp.str, cs.str);
return temp;
}
Cstring operator +(const char *p)
{
Cstring temp;
temp.str = new char[strlen(str)+strlen(p)+1];
if(temp.str)
{
strcpy(temp.str, str);
strcat(temp.str, p);
}
return temp;
}
friend Cstring operator +(char *p, const Cstring &cs)
{
Cstring temp;
temp.str = new char[strlen(cs.str)+ strlen(p)+1];
if(temp.str)
{
strcpy(temp.str, p);
strcat(temp.str, cs.str);
}
return temp;
}
Cstring operator =(const Cstring &cs)
{
str = new char[strlen(cs.str)+1];
strcpy(str, cs.str);
return *this;
}
void show()
{
cout<<str<<endl;
}
~Cstring()
{
delete []str;
}
};
int main()
{
Cstring s1("is a wondful");
Cstring s2("programming Language!");
Cstring s3;
s3 = "c++" + (s1 + s2);
s3.show();
s3 = (s1 + s2) + "c++";
s3.show();
system("pause");
return 0;
}