重载+运算符, 让指针 char * c1 + char * c2 返回 char * c3...
搞不明白...
就是想让 指针 char + 指针 char 返回 一个 指针 char...
这里出错:
char * operator+(char * c1, char * c2)
详细:
------------------------
#include <iostream>
#include <cstring>
using namespace std;
char * StrCat(char * c1, char * c2)
{
int Len = strlen(c1) + strlen(c2);
char * c3 = new char[Len+1];
strcpy(c3, c1);
strcat(c3, c2);
return c3;
} // end char * StrCat(char * c1, char * c2)
/*
*/
// 怎么重载 全局 + ?
char * operator+(char * c1, char * c2)
{
return StrCat(c1, c2);
}
int main()
{
char * c1 = "hello ";
char * c2 = ", world! ";
cout < < "c1: " < < c1 < < ", length: " < < strlen(c1) < < '\n ';
cout < < "c2: " < < c2 < < ", length: " < < strlen(c2) < < '\n ';
char * c3;
c3 = StrCat(c1, c2);
cout < < "c3: " < < c3 < < ", length: " < < strlen(c3) < < '\n ';
// 我想实现 指针 c1 + c2, 返回一个新指针...
//char * c4 = c1 + c2;
return 0;
}
[解决办法]
你不能对built-in类型进行运算符重载,也就是说运算符重载函数中必须至少有一个参数是用户定义类型的。