问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

运算符重载 "abc"+"def"="abcdef"

发布网友 发布时间:2024-10-19 04:27

我来回答

3个回答

热心网友 时间:2024-12-02 09:55

//运算符重载 "abc"+"def"="abcdef",还可以连加
注意:用到了友元,所以请不要使用VC++ 6.0这个编译器,不支持友元

#include<iostream>

using namespace std;

class Str
{
private: char *a;
public:
Str(){}
Str(char *s)//用字符串初始化类成员
{
int n=strlen(s);
a=new char[n+1];
strcpy(a,s);
}
Str(Str &s)//复制构造函数
{
int n=strlen(s.a);
a=new char[n+1];
strcpy(a,s.a);
}
Str& operator+(const Str &s)//重载+运算符
{
int n1=strlen(s.a),n2=strlen(a);
Str temp(a);
delete[] a;
a=new char[n1+n2+1];
strcpy(a,temp.a);
strcat(a,s.a);
return *this;
}
Str& operator=(const Str &s)//重载=运算符
{
int n=strlen(s.a);
a=new char[n+1];
strcpy(a,s.a);
return *this;

}
friend ostream& operator<<(ostream &os,Str &s)//重载<<运算符
{
os<<s.a<<endl;
return os;
}
~Str()
{
delete[] a;
}
};
int main()
{
Str a("abc"),b("cde"),c("ghi"),d;
d=a+b+c;
cout<<d<<endl;
return 0;
}

热心网友 时间:2024-12-02 09:58

#include<cstring>
#include<iostream>
using namespace std;
template<class T>
class Mychar{};
template<>class Mychar<char>{
char* pc;
public:
Mychar<char>(){
pc=new char[5];
strcpy(pc,"null");
}
Mychar<char>(char* c){
pc=new char[strlen(c)+1];
strcpy(this->pc,c);
}
Mychar<char>(const Mychar<char>& left);
void set_char(const char* c);
char* get_char()const;
Mychar<char>& operator=(const Mychar<char>& t);
friend ostream& operator<< (ostream& os,const Mychar<char>& mychar){
return os<<mychar.pc;
}
friend Mychar<char> operator+(const Mychar<char>& left,const Mychar<char>& right){
Mychar<char> temp;
delete []temp.pc;
temp.pc=new char[strlen(left.pc)+strlen(right.pc)+1];
temp.pc=strcat(left.pc,right.pc);
return temp;
}
};

Mychar<char>::Mychar(const Mychar<char> &left){
this->pc=new char[strlen(left.pc)+1];
strcpy(this->pc,left.pc);
}

void Mychar<char>::set_char(const char *c){
delete []this->pc;
this->pc=new char[strlen(c)+1];
strcpy(this->pc,c);
}

char* Mychar<char>::get_char() const{
return this->pc;
}
Mychar<char>& Mychar<char>::operator =(const Mychar<char>& t){
if(this!=&t){
delete [] this->pc;
this->pc=new char[strlen(t.pc)+1];
strcpy(this->pc,t.pc);
}
return *this;
}

int main(){
Mychar<char> c1="abc";
Mychar<char> c2("def");
Mychar<char>c3=c1+c2;
cin.get();
}

//另: 用char很麻烦,还不如用std::string
直接加就OK了

热心网友 时间:2024-12-02 10:01

#include <iostream.h >
#include <stdlib.h >
#include <string.h >
//const int CHAIN_NUM = 3;

class RCInst
{

public:
//char q[CHAIN_NUM];
char* ocname;
int ocNum;

RCInst()
{}
RCInst(char* a,int b)
{ // ocname=new char[strlen(a)+1];
ocname=strdup(a);
ocNum=b;
cout <<"constructing " <<ocname <<endl;

}

RCInst(RCInst& a)
{ ocname=new char[strlen(a.ocname)+1];
strcpy(ocname,a.ocname);
ocNum=a.ocNum;
// ocname=strdup(a.ocname);
cout <<"copying " <<ocname <<endl;

}

~RCInst()
{
cout <<"destructing " <<ocname <<endl;
};

RCInst operator+(RCInst& b,RCInst& c)
{
int num=b.ocNum+c.ocNum;

char* ch=new char[strlen(b.ocname)+strlen(c.ocname)];
ch=strcat(b.ocname,c.ocname);

RCInst z(ch,num);
return z;
}

void main()
{

// RCInst::RCInst_iterator a;
// a.show();

RCInst a("a",11);
cout <<"ocNum" <<a.ocNum <<endl;
RCInst b("b",21);
RCInst c;

c=a+b;
cout <<"c" <<c.ocNum <<endl;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么电脑上的word界面变小为什么WORD里面的页面变的很小怎么设置回来... AHA拯救心脏救命术(Basic Life Support,BLS) 基础生命的基本顺序 机械制图第一视角与第三视角的区别 明日之后野外感染者据点都在什么地方 感染就聚集点位置分享 明日之后 明日之后哪些地图有强力感染者? 《明日之后》野外感染者据点一览 明日之后野外感染者据点去哪找 妙洁提醒你注意:保鲜膜有些不能加热 有些不能包肉 C盘里文件的修改日期是不是就代表那天我用过电脑,我是上午用的,可文件... ...完全浸没在长9dm,宽4.5dm,高7dm的盛水长方体容器中,水面上升2... 一个长方体形状的玻璃容器内盛有水,容器长9厘米,宽8厘米,水面高2.5厘米... 广式腊肠是甜的还是咸的 广式腊肠的做法和配方 一个长方体玻璃容器底面积是250平方厘米高12厘米里面盛有6厘米的水现... c++设计一个字符串类,通过重载“+”运算符实现两个字符串的拼接... 完成String类、操作符重载(+、=、&gt;&gt;、&lt;&lt;、[]、&gt;)、length函数、find函 ... 盛一盆水,在盆里放两块高出水面的砖头,砖头上搁一只比盆小一点的篮子... ...放1颗大珠子2颗小珠子,水面上升了容器高度的1/4 一个长1.5分米,宽8厘米,高6厘米的长方体玻璃容器内盛有水,当放进一块... 一模复习用万维预测卷好不好 ...市区去仓前工业区怎么坐车?不要绕远的那个线路,直接从文一西路过去... 仓前大厦交通出行 从杭州断桥2到杭师大仓前校区怎么? 从火车东站东到仓前怎么坐公交车,最快需要多久 驾驶证实习期不挂实习号牌 处罚方式? 2019刚刚拿到驾驶证有几分 刚刚拿到驾驶证能开车吗 实习驾驶证是什么 win10系统怎么跳过oobe。 Dropshipping起步&amp;避坑指南 ...张艺谋获百花奖影帝,国内不务正业的导演你还知道有谁? 导演徐克分镜手稿曝光,原来他画画这么棒,网友:莫名想起了姜文 人为什么在睡着后会做梦?科学家给出一个解释,答案让人不敢相信_百度知... ...靠近北京哪里?是近郊还是市区?房租大约是多少钱/月? 现在奥运村在北京哪个位置 奥运村到底在那裏啊? 2008北京奥运会所需场馆有多少个? 想去北京天安门和奥运村附近玩儿,住在那里比较方便呢?还有,两地怎么走... 农历四月出生的女人命运 哪些地区被命名为第二批中国温泉之乡(城)? that's OK是没关系的意思吗? ...提示用微信号当前绑定的手机号进行解封,但手机号已经不用了还能解封... don't be sorry和that‘s ok的区别 摩托车早晨关上风门都很难启动怎么回事? 摩托车风门关了就启动不起来,怎么回事?求大神帮助 什么网站有小说VIP部分打包下载的? 怎么才能将VIP小说下载下来 摩托车关闭风门打不着火 打开风门可以打着是什么情况 ...都更感人。这个部分写出了作者的感受,为什么要这样写? 运输管理专业学什么