重载+运算符, 让指针 char * c1 + char * c2 返回 char * c3...

btbtd 2007-09-04 01:19:52
搞不明白...
就是想让 指针 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;
}
...全文
222 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
btbtd 2007-09-04
  • 打赏
  • 举报
回复
哦, 明白了, 谢谢各位...
yixiao386 2007-09-04
  • 打赏
  • 举报
回复
这又是何必呢,你在new一个指针不行吗
wang_wuhui 2007-09-04
  • 打赏
  • 举报
回复
char * StrCat(char * c1, char * c2)这个函数和strcat()很像..
soft06 2007-09-04
  • 打赏
  • 举报
回复
strcat()
jixingzhong 2007-09-04
  • 打赏
  • 举报
回复
改成自定义函数的形式吧,
代码基本不需要改动了。
jixingzhong 2007-09-04
  • 打赏
  • 举报
回复
内置类型的基本操作禁止重载
manrenmanren 2007-09-04
  • 打赏
  • 举报
回复
运算符重载不能对内部类型,就好比你不可以为整形变量定义一个operator+一样
manrenmanren 2007-09-04
  • 打赏
  • 举报
回复
strcat()不是可以么
xlfddlfd 2007-09-04
  • 打赏
  • 举报
回复
楼上一针见血
gfxiang 2007-09-04
  • 打赏
  • 举报
回复
你不能对built-in类型进行运算符重载,也就是说运算符重载函数中必须至少有一个参数是用户定义类型的。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧