
C++中如何定义运算符重载,没看明白啊。。。
老师讲课一带而过,然后留了一道书上找不到解决办法的题~~比如我定义了一个string类(就是模仿<string>的那个)。这是我们老师幻灯片上留的作业题,帮我写个加号重载...
老师讲课一带而过,然后留了一道书上找不到解决办法的题~~
比如我定义了一个string类(就是模仿<string>的那个)。这是我们老师幻灯片上留的作业题,帮我写个加号重载的函数输出的函数和输出的函数可以么,让我有章可循额。。手里目前就一本谭浩强的书和一本学校的英文教材,里面几乎没什么内容啊。。
class string
{
public:
string()(char* =“ ”);
string(const string&);
string& operator + (string&);
.......
......
friend ostream& operator<<(ostream&,string&);
private:
char *p;
int strlenth;
};
加号重载字符串相加,输出应该是输出处理后的字符串。。 展开
比如我定义了一个string类(就是模仿<string>的那个)。这是我们老师幻灯片上留的作业题,帮我写个加号重载的函数输出的函数和输出的函数可以么,让我有章可循额。。手里目前就一本谭浩强的书和一本学校的英文教材,里面几乎没什么内容啊。。
class string
{
public:
string()(char* =“ ”);
string(const string&);
string& operator + (string&);
.......
......
friend ostream& operator<<(ostream&,string&);
private:
char *p;
int strlenth;
};
加号重载字符串相加,输出应该是输出处理后的字符串。。 展开
展开全部
这要看你重载的运算符想实现什么功能了。。。
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
class string
{
public:
string(char* ="");
string(const string&);
string& operator + (string&);
friend ostream& operator<<(ostream& os, string& s)
{
return os<<s.p;
}
private:
char *p;
int strlenth;
};
string::string(char* str)
{
if(!str)
{
strlenth=0;
str=new char[1];
str='\0';
}
else
{
strlenth=strlen(str);
p=new char[strlenth+1];
strcpy(p,str);
}
}
string::string(const string& s)
{
p=new char[strlen(s.p)+1];
strcpy(p,s.p);
}
string& string::operator+(string& s)
{
char* tem;
tem=(char*)malloc(strlenth+s.strlenth+1);
strcpy(tem,p);
strcat(tem,s.p);
string s_tem(tem);
free (tem);
return s_tem;
}
int main(void)
{
string str1("abc");
string str2("def");
str1=str1+str2;
cout<<str1;
return 0;
}试试这个 刚才编译不过是VC6的问题,这下可以了。
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
class string
{
public:
string(char* ="");
string(const string&);
string& operator + (string&);
friend ostream& operator<<(ostream& os, string& s)
{
return os<<s.p;
}
private:
char *p;
int strlenth;
};
string::string(char* str)
{
if(!str)
{
strlenth=0;
str=new char[1];
str='\0';
}
else
{
strlenth=strlen(str);
p=new char[strlenth+1];
strcpy(p,str);
}
}
string::string(const string& s)
{
p=new char[strlen(s.p)+1];
strcpy(p,s.p);
}
string& string::operator+(string& s)
{
char* tem;
tem=(char*)malloc(strlenth+s.strlenth+1);
strcpy(tem,p);
strcat(tem,s.p);
string s_tem(tem);
free (tem);
return s_tem;
}
int main(void)
{
string str1("abc");
string str2("def");
str1=str1+str2;
cout<<str1;
return 0;
}试试这个 刚才编译不过是VC6的问题,这下可以了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我可以传你我们老师以前给我们的PPT,很详细的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询