![]() |
#2
我菜1192011-11-29 10:10
因为我最近也在学习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; } |
三、项目名称:(继承与派生)
1、已知类Cstring和main()函数class Cstring{
char *str;
int size;
public:
….
};
(1)、主程序如下:
void main()
{
Cstring s1(“is a wondful ”);//调用有字符串参数的构造函数
Cstring s2(“programming Language!”);
Cstring s3; //调用没有参数的构造函数
S3=”C++”+(s1+s2) //调用复制(拷贝)构造函数,同时还要对“+”进行重载
}
试编写一个程序,以实现main()函数中的字符串拼接。输出结果如下:
(2)、主程序如下:
void main()
{
Cstring s1(“C++ is a wondful ”);//调用有字符串参数的构造函数
Cstring s2(“programming ”);
Cstring s3; //调用没有参数的构造函数
s3= (s1+s2)+ “Language!”//调用复制(拷贝)构造函数,同时还要对“+”进行重载
试编写一个程序,以实现main()函数中的字符串拼接。输出结果如(1)的结果