为什么我这样写会出错:
void operator++(){cout<<"重载运算符在执行\n";}
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0;
++i;
return 0;
}
错误是这样说的:operator++没有形参,是啥意思哦?
C++中的重载运算符operator的使用问题!
答案:6 悬赏:50
解决时间 2021-04-09 14:59
- 提问者网友:长安小才冯
- 2021-04-08 18:14
最佳答案
- 二级知识专家网友:废途浑身病态
- 2021-04-08 18:26
不能够对基本数据类型进行运算符重载,所以你这个是错的,而且void operator++()中少参数
给你个正确的写法:
class test
{
public:
int a,b;
friend opeator ++ (test &t);//友元,这句可以注释,没有也可以。
};
void operator++ (test &t)
{
cout<<" "<<endl;
}
这样的重载是没错的
给你个正确的写法:
class test
{
public:
int a,b;
friend opeator ++ (test &t);//友元,这句可以注释,没有也可以。
};
void operator++ (test &t)
{
cout<<" "<<endl;
}
这样的重载是没错的
全部回答
- 1楼网友:兮沫♡晨曦
- 2021-04-08 22:43
a605281436说得很对。
另外重载operator++有两个版本,分别是
class A;
成员函数重载版本
A& A::operator++(void){
//
}
const A A::operator++(int){
//
}
全局重载版本
A& operator++(A&){
//
}
const A operator++(A&,int){
//
}
int参数是哑元,用来区分两种版本的。
如果
A a;
++a;调用的是A& A::operator++(void);或A& operator++(A&);
a++;调用的是const A A::operator++(int);或const A operator++(A&,int);
- 2楼网友:心痛成瘾
- 2021-04-08 22:21
运算符重载也是一个函数嘛,你i是int类型的,不传进去编译器哪知道是用哪个重载呢。。。
++i,在编译器上就是调用operator++(i),你都没有重载这个函数,编译器当然不认啦。
void operator++(int i)
{
cout<<"int ++ is override"<<endl;
}
这样写就对了!
- 3楼网友:糜废丧逼
- 2021-04-08 20:48
1.可不可以有形参,关键是要看你重载的运算符,你给的那个网站里面的重载运算符+,因为+是把两个加起来,所以必须要有2个参数,可以是隐式传递一个参数+显式参数一个,或者显式传递2个参数,所以就要求使用最少一个形参,+我暂时不知道,但是-的话可以重载2种类型,一种是变成负数,只要一个参数,一种是相减,需要2个参数
2.返回值那的话,我记得也是看你重载什么运算符的,如果你是重载+运算符,那么肯定要运算完之后返回个值,但是你如果是<<运算符,那么你可以不用返回值,但是如果你要这样cout<<"a"<<"b";连续多次输出,那么就要返回值,不然就不能运行
如果不明白,可以网上下载本c primer plus 5或者6的pdf文件,找到好像是十一章使用类里面,就会介绍运算符重载
- 4楼网友:废途浑身病态
- 2021-04-08 20:05
不能是基本数据类型,运算符重载,所以你这是错误的,并void运算符+ +()的小参数
给你正确的写法:
类测试...... /> {
:
整数A,B;
朋友opeator + +(测试&T);/ /朋友,这句话可以注明,没有也可以。
};
void运算符+ +(测试&T)
{
法院<<“”<< endl;
}
重载是
- 5楼网友:嗷呜我不好爱
- 2021-04-08 18:32
不能是基本数据类型,运算符重载,所以你这是错误的,并void运算符+ +()的小参数
给你正确的写法:
类测试...... /> {
:
整数A,B;
朋友opeator + +(测试&T);/ /朋友,这句话可以注明,没有也可以。
};
void运算符+ +(测试&T)
{
法院<<“”<< endl;
}
重载是
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯