C++重载+来连接2个对象的字符串小问题?

来源:百度知道 编辑:UC知道 时间:2024/05/15 14:49:44
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

class STR
{
public:
STR() {}
STR(string c) { zifuchuan = c; }
~STR() {}
void display(void) { cout << zifuchuan << endl; }
STR operator +(const STR &);
private:
string zifuchuan;
};

STR STR::operator +(const STR &t)
{
STR temp;
temp.zifuchuan = strcat(zifuchuan, t.zifuchuan);
return temp;
}

int main(void)
{
STR str1("abc"), str2("def"), c;
c = str1 + str2;
cout << c.display << endl;
return 0;
}

其实是为了练习重载运算符+而想把对象str1、str2的字符串连接起来,最后输出。。。但是编译器
提示在重载+函数内有问题,哎~~~不会改。。。谢谢大家帮我

#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>

using namespace std;
/*
class STR
{
public:
STR() {}
STR(string c) { zifuchuan = c; }
~STR() {}
void display(void) { cout << zifuchuan << endl; }
STR operator +(const STR &);
private:
string zifuchuan;
};

STR STR::operator +(const STR &t)
{
STR temp;
//这里修改
temp.zifuchuan = zifuchuan + t.zifuchuan;
return temp;
}
*/

//如果按照你的思路,因该是上面那样修改。但是因为string已经重载了operator+
//因此上面的例子就不能很好的说明问题,另外说一些变量命名规范,用拼音
//实在是下下策,真正的程序设计高手都是按某个命名规范来命名程序变量的,
//好处是第一眼看到变量名称就知道它是干什么用的,什么类型。如果是找工作
//面试,面试官一看到你的这个拼音变量就知道你没什么程序设计经验。
//下面是一个简单的例子,可以参考,实际上,像字符串类是很典型的一个面向对象的例子
//尤其是内存管理,可以参考以下别人的实现,例如MFC中的CString,还有网上的很多其他实现
//标准模板里的string如果能看懂,也可以看看

class STR
{
public: