请教一道C++类定义的练习题
练习题让我们自定义一个简单的字符串类,各位高手,我们老师说了C++的确自己已经定义过了这个类,不过这个练习题的目标主要是为了考察一下我们对内存操作、引用等方面的基础,我自...
练习题让我们自定义一个简单的字符串类,各位高手,我们老师说了C++的确自己已经定义过了这个类,不过这个练习题的目标主要是为了考察一下我们对内存操作、引用等方面的基础,我自己写了一个类,可是编译的时候老是出错误,具体大家可以看一下下面的图。
我发现如果定义处理一个存在内存动态申请的类很麻烦,特别是当和引用或者指针结合起来的时候。请教各位有没有好办法可以解决这个问题
void MyString::show()
{
cout<<"len="<<len<<'\t'<<"str="<<str<<endl;
}
MyString & MyString::operator=(const MyString &s)
{
if(str)
delete[] str;
len=s.len;
str=new char[len+1];
strcpy(str, s.str);
return *this;
}
MyString operator+(MyString &a, MyString &b)
{
int templen=a.len+b.len;
char *temp=new char[templen+1];
strcat(temp,a.str);
strcat(temp,b.str);
MyString k(temp);
return k;
}
int main()
{
MyString a("1,23,456"), b, c;
cout<<"After c=a+b, the information of c:"<<endl;
c=a+b; //K
} 展开
我发现如果定义处理一个存在内存动态申请的类很麻烦,特别是当和引用或者指针结合起来的时候。请教各位有没有好办法可以解决这个问题
void MyString::show()
{
cout<<"len="<<len<<'\t'<<"str="<<str<<endl;
}
MyString & MyString::operator=(const MyString &s)
{
if(str)
delete[] str;
len=s.len;
str=new char[len+1];
strcpy(str, s.str);
return *this;
}
MyString operator+(MyString &a, MyString &b)
{
int templen=a.len+b.len;
char *temp=new char[templen+1];
strcat(temp,a.str);
strcat(temp,b.str);
MyString k(temp);
return k;
}
int main()
{
MyString a("1,23,456"), b, c;
cout<<"After c=a+b, the information of c:"<<endl;
c=a+b; //K
} 展开
3个回答
展开全部
没图,不知道什么意思。
#include <iostream>
using namespace std;
class STR
{
string str;
};
STR *Str;
void main()
{
Str=new STR; //分配内存
delete Str; //删除内存
}
这样?
#include <iostream>
using namespace std;
class STR
{
string str;
};
STR *Str;
void main()
{
Str=new STR; //分配内存
delete Str; //删除内存
}
这样?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把源代码发上来让大家看看
更多追问追答
追问
你好,你可以把问题补充的部分放到机器里面跑一下,看看你的报错是不是和我的一样,我的报错是说什么"no matching function for call to MyString::MyString(MyString)",到底发生了什么?
追答
你这个代码不全啊。仅看错误提示,好像是你没定义值拷贝构造函数。你的两个重载函数中,return *this;和return k;都会隐式调用值拷贝构造函数,你最好自己定义一个。类拷贝构造函数的执行代码和operator=的几乎是一样的,很好写的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询