读书人

重载+运算符, 让指针 char * c1 + cha

发布时间: 2012-02-28 13:06:35 作者: rapoo

重载+运算符, 让指针 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类型进行运算符重载,也就是说运算符重载函数中必须至少有一个参数是用户定义类型的。

读书人网 >C++

热点推荐