C++ 我怎样才能修复我的爱神?我想重载运算符+;排列
我想在考虑char的数组中重载运算符+。我想打印hello杰克,但它在我的程序中有Eror。我怎样才能修好它C++ 我怎样才能修复我的爱神?我想重载运算符+;排列,c++,C++,我想在考虑char的数组中重载运算符+。我想打印hello杰克,但它在我的程序中有Eror。我怎样才能修好它 class Test { private: char s1, s2; public: Test() {} Test(char a, char b) { s1 = a; s2 = b; } void Print() { cout << "String1 :" << s1 << "\tStr
class Test
{
private:
char s1, s2;
public:
Test() {}
Test(char a, char b) { s1 = a; s2 = b; }
void Print() { cout << "String1 :" << s1 << "\tString2 :" << s2 << endl; }
Test operator+(const Test& r)
{
Test temp;
temp.s1 = s1 + r.s1;
temp.s2 = s2 + r.s2;
return temp;
}
};
//////////////////////////////////////////////////////////////////////////
int main()
{
char str1[] = "Hello";
char str2[] = " Jack ";
Test t1(str1[]);
Test t2(str2[]);
Test temp;
temp = t1 + t2;
temp.Print();
}
类测试
{
私人:
字符s1,s2;
公众:
Test(){}
测试(字符a,字符b){s1=a;s2=b;}
void Print(){cout您定义的几乎所有内容都是错误的。
您的+运算符
重载将作为“测试”一部分的两个字符相加,但您只会将其中一个传递给单独的测试对象
如果您想使用字符串,请使用std::string
而不是字符数组,除非您有特殊的理由这样做,但这是您遇到的最小问题
friend Test operator+(Test lhs、const Test和rhs)
是基于两个相同对象的值定义新对象返回的方法
这样,您就不需要打印函数,因为一旦您覆盖了该功能,打印函数就可以按原样放在iostream中,这实际上相当于只返回存储的字符串(字符串单数,这里每个对象只需要一个)
在当前状态下,我非常怀疑您的代码是否能够编译,因为您正在将一个参数传递给一个只接受一个或两个参数的对象。将其更改为char没有帮助。char
是单个字符,不是c字符串,也不是std::string
类测试
只能包含2个字符char s1,s2、
它永远无法保存一个c字符串或将两个c字符串添加到一起。我建议您不能将多个char
s存储到一个char
。您必须了解内存管理。或者,使用std::string
。它为您的用例做好了充分准备。对于新代码,您可以Test t1(str1[0])
和测试t2(str2[0]);
但是我不确定操作符+应该做什么。它不能添加额外的字符。测试t1(str1[]) >告诉我们你要用这行代码做什么。我真的认为你没有阅读正确的C++学习材料,因为你将永远看不到任何一本好的C++书籍中的代码。