#include <iostream.h>
#include <cstring>
class Mystring
{
public:
void output();
void Mystring::create(char *s);
friend Mystring operator +(Mystring &b,Mystring &c);//重载+号运算符
private:
char *str;//指针字符型私有成员
};
int main()
{
char a1[100],a2[100],a3[100];
Mystring a,b,c;
a.add();
cout<<"Please input the string of b"<<endl;
cin.getline(a1,100);
b.create(a1);
cout<<endl;
cout<<"Please input the string of c"<<endl;
cin.getline(a2,100);
c.create(a2);
cout<<endl;
a=b+c;
a.output();
cout<<endl;
return 0;
}
void Mystring::create(char *s)//定义Mystring的create成员函数
{
str=new char[strlen(s)+1];//运用到析构函数,分配动态字符型数组内存空间,
strcpy(str,s);
}
Mystring operator +(Mystring &b,Mystring &c)//对Mystring类的+运算符函数进行重载
{
Mystring a;
a.str=strcat(b.str,c.str);
return a;
}
void Mystring::output()
{
cout<<"the string of a is"<<endl;
cout<<str<<endl;
}
在自学C++,想做一个a,b,c重载的加法运算符,下面的是错误提示,求解答,谢谢
求助,关于一道C++函数重载的问题
1、运算符重载不改变操作符原先的优先级、结合性和操作数数目,++是单目操作符,所以1不会成立的。你有这样的问题大概是因为双目操作符比如*,可以有x.operator*(y)这种写法吧? 但是这个不改变*是二目操作符的事实。C++规定:双目操作符重载作为成员函数时只能有一个形参,调用方为左操作数,形参...
c++重载问题
你应该先把++前增与后增看一下 二者最后的结果都是把该数+1,但 前增是要自增后的结果,后增是要自增前的结果,重载前增后增是有区别的 后增参数必须有一个int值,任何值都 可以,只要是int就行 目的是区别前增与后增 试想这样你能区分出哪个是前哪个是后 COpertor& COpertor::operator...
c++重载的一个问题
ostream& operator<<(ostream& os,const str s)在这一行首部添加 friend。参数const str s可以改为const str & s,传引用稍稍高效,免去了实参到形参的复制。顺带提一下:<< 输出运算符决不要弄成 成员运算符。否则用起来很怪异:比如你的对象名字叫obj,那么你得这样调用输出 : obj<<cout;...
关于c++中重载的问题
函数重载是指对现有的函数进行重载,重载函数与被重载的函数的函数名相同,但参数类型、参数个数和返回类型中有一个或者多个不同,以示区别 运算符重载是指对C++中部分运算符赋予其它功能
简单C++重载问题
因为你重写C0的虚函数数不规范,导致系统认为你写的是另一个函数,具体如下:在 C0 中为 void Set1(int i);在 C1 中为 int Set1(float i);系统判定虚函数有三个要求:1.与基类函数同名;2.有相同的参数个数及对应类型;3.有相有返回值或满足类型兼容规则的指针,引用的返回值;你写的函数只有...
c++ 函数重载问题
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
请教关于C++中重载的问题1
指针P声明为公有的才能访问,就按友好函数访问的权限解释,因为你在重载函数中用到了Strcmp库函数,而它并不是类String的友好函数,因此是不能访问到指针P的 include <iostream> include<string> using namespace std;class String { public:String(){p=NULL;} String(char *str);friend bool ...
C++重载问题
把 “int main()”改成int main()”即可。原来的括号是中文输入状态下的,系统会报错。
C++ 重载问题
其他问题楼上的几位已经提出来了,现在我来说说Printf()总是输出4705936,问题出在“+”重载函数中以下两处:int len=strlen(s1); \/\/这里返回的字符串长度是对的 char t1[maxsize];for(int i=0;i<len,*s1!='\\0';i++){ t1[i]=*s1;s1++; \/\/Oh, My God! 看得我蛋疼,居然在修改最...
关于C++重载的一个问题求解~~
如,C++本身支持下面的转换 char a = '0';int i = (int)a;或者写成int i = int(a);现在有了如上定义,也有类似的形式了 complex a;double i = double(a);这样可以将类complex的对象转换为double,因为上面的重载提供了这样的转换方法。