C++重载运算符
下面是重载+法的一个例子
//main.cpp
#include <iostream>
#include "characters.h"
int main() {
character p=character('b');
character q=character('f');
character w=p+q;
w.show();
return 0;
}
//
// Created by kisara on 2020/2/2.
//
#include <iostream>
#include "characters.h"
character::character() {
this->c='0';
}
character::character(char c) {
this->c=c;
}
character character::operator+(const character &a) const {
character temp;
temp.c=a.c+this->c-'a';
return temp;
}
void character::show() {
std::cout<<this->c;
}
//
// Created by kisara on 2020/2/2.
//
#ifndef OPERATOR_OVERLOAD_CHARACTERS_H
#define OPERATOR_OVERLOAD_CHARACTERS_H
class character {
private:
char c;
public:
character();
character(char c);
character operator+(const character &a)const ;
void show();
};
#endif //OPERATOR_OVERLOAD_CHARACTERS_H
1.重载后的运算符必须至少有一个操作数是用户定义的数据,这将防止用户为标准类型重载运算符,因此,不能将减法运算符(-)重载为计算两个double的和,而不是他们的差。虽然这种限制将对创造性有所影响,但可以确保程序正常运行
2.使用运算符时不能违反运算符原来的句法规则。例如不能将球磨运算符(%)重载成使用一个操作数
3.不能创建新运算符。例如不能用operator**()函数来表示求幂
4一些特定的运算符不能重载
sizeof运算符
.运算符
等等此处不一一列举了