< />

C++重载运算符 kisara

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运算符
.运算符

等等此处不一一列举了

kisarawechat kisaraalipay