民间小调全集傻子上学:谁帮我讲一下这个程序,顺便帮改一下

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 21:58:25
#include<iostream.h>
class String{
private:
char*contents;
public:
string(){*contents='\0';}
int get_length();
char*get_contents(){return contents;}
void set_contents(int in_lenght,char*in_contents);
void set_contents(char*in_contents);
};
int String::get_length()
{
int i=0;
char*p=contents;
while(*p++!='\0')i++;
return i;
}
void String::set_contents(int in_length,char*in_contents)
{
in_contents[in_length]='\0';
contents=in_contents;
}
void String::set_contents(char*in_contents)
{
contents=in_contents;
}
void main()
{
String x,y;
x.set_contents("Hello,world!");
y.set_contents(34,"This is an object_oriented program");
char*p=x.get_contents();
char*q=y.get_contents();
cout<<"x="<<p<<"y="<<q<<'\n';
int i=x.get_length();
cout<<"The length of string x is"<<i;
}
vc++6.0环境下的。
还是没有解决啊,还是内存错误。

这个程序运行的话会出现内存错误.
成员contents没有分配空间
改:
private:
char *contents;
public:
String(int count=10)
{
contents=new char[count];
}
~String(){delete contents;}

你需要按你实际修改:
void main()
{
String x,y;
x=new String(50);
y=new String(50);
...

还有:

contents=in_contents;
写法是错误的
字符窜不能直接拊值
应该使用strcpy(...)函数.
strcpy(contents,in_contents);