#include <iostream.h>
#include <string.h>
class String
{
private:
char *str;
public:
String(char *s="")
{
int size =strlen(s);
str=new char[size+1];
strcpy(str,s);
}
String(String & ss)
{
str=new char [strlen(ss.str)+1];
strcpy(str,ss.str);
} ~String()
{
delete str;
} void showString()
{
cout << "字符串变量为=" <<str << endl;
}
String & operator=(String & ss)
{
if(this==&ss)
{
return *this;
}
else
{
cout << "赋值运算符" << endl ;
delete str;//这个好像也可以不要???
str= new char[strlen(ss.str)+1];
strcpy(str,ss.str );
return *this;
}
}
String operator + (String s2)
{
String temp;
temp.str =new char[strlen(str)+strlen(s2.str)+1];//没有对应的delete???
strcpy(temp.str,str);
strcat(temp.str,s2.str);
return(temp);
}
};
void main()
{
String s1("字符串1");
cout << "s1=";
s1.showString (); String s2(s1);
cout << "s2 = ";
s2.showString (); String s3=s1+s2;
s3.showString(); s3=s3+s1;
s3.showString (); s2=s3+"fff";
s2.showString();
}
#include <string.h>
class String
{
private:
char *str;
public:
String(char *s="")
{
int size =strlen(s);
str=new char[size+1];
strcpy(str,s);
}
String(String & ss)
{
str=new char [strlen(ss.str)+1];
strcpy(str,ss.str);
} ~String()
{
delete str;
} void showString()
{
cout << "字符串变量为=" <<str << endl;
}
String & operator=(String & ss)
{
if(this==&ss)
{
return *this;
}
else
{
cout << "赋值运算符" << endl ;
delete str;//这个好像也可以不要???
str= new char[strlen(ss.str)+1];
strcpy(str,ss.str );
return *this;
}
}
String operator + (String s2)
{
String temp;
temp.str =new char[strlen(str)+strlen(s2.str)+1];//没有对应的delete???
strcpy(temp.str,str);
strcat(temp.str,s2.str);
return(temp);
}
};
void main()
{
String s1("字符串1");
cout << "s1=";
s1.showString (); String s2(s1);
cout << "s2 = ";
s2.showString (); String s3=s1+s2;
s3.showString(); s3=s3+s1;
s3.showString (); s2=s3+"fff";
s2.showString();
}
解决方案 »
- 如何屏蔽脏话
- 关于ICOPEN使用次数限制的问题
- ie加载控件的问题
- 事件执行完后再执行类成员函数的问题
- 高分求:Focus On 2D in Direct3D【中文:Direct3D 中的 2D 编程】 随书代码
- One or more breakpoint cannot be set and have been disabled.
- GetVolumeInformation 得到的值不唯一
- 线程函数中调用ExecWB失败?
- 怎样定制MessageBox的按钮
- 怎样画出像 Splitter 那样的 分隔条?绝对高分!!!(回答出来后,再开一个感谢贴,在加分)
- 请问一个代理服务器的问题
- 如何提取灰度图的灰度值?
operator+中可以不要,destruct时delete
strcat(temp.str,s2.str);问一下,为什么可以访问私有成员??我没有定义友元??
{
strcat(temp.str,s2.str);
}访问自己类中的私有成员当然可以
你把delete全部注掉都不会有报错,VC没办法检测堆内存的。