在c语言的时候,我们的运算符号都是基于内置类型进行的。到了c++这里,新增了类类型,它不是内置类型,但是有时候因为项目需要或者简易步骤时,我们需要类类型对象像内置类型一样进行运算。在此种背景下产生了重载运算符。
10年积累的成都网站制作、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有北票免费网站建设让你可以放心的选择与我们合作。重载对象除了 ?: . :: .*不能重载外,其他的都可以重载,
重载运算作用于什么重载运算符后就成了函数,既可以在类内部重载运算符从而成为成员函数,也可以在类外部重载。大多数时候都是作为成员函数而存在。
概念类型 operator符号(参数){},重载格式形如这样。当我们重载这些= () [] ->符号时,意味着他们必须是成员函数。作为成员函数时,函数只有一个参数,这个参数对象对应的是被重载的符号运算时右边那个对象,因为类中有this指针,相当于被重载的符号运算时左边的对象。如果作为非成员函数时,函数的参数个数就是和该运算符计算时对应的参数个数一致。比如重载了一个+运算符,函数为非成员函数,那么这个函数就是两个参数。第一个参数就是+号前面的数,第二个参数就是+号后面那个数。
举例xxx.h
#pragma once
#include#include "TestOperator_Global.h"
using namespace std;
class TEST_OPERATOR_API ClassOperator
{friend ClassOperator operator-(const ClassOperator& r1, const ClassOperator& r2);
public:
explicit ClassOperator(int a, int b, string name);
virtual ~ClassOperator();
public:
ClassOperator operator+(const ClassOperator& r1);
public:
void printInfo();
private:
int a;
int b;
string name;;
};
ClassOperator operator-(const ClassOperator& r1, const ClassOperator& r2);
xxx.cpp
#include "ClassOperator.h"
ClassOperator::ClassOperator(int a, int b, string name)
{this->a = a;
this->b = b;
this->name = name;
}
ClassOperator::~ClassOperator()
{}
ClassOperator ClassOperator::operator+(const ClassOperator& r1)
{return ClassOperator(a+r1.a, b+r1.b, name+r1.name);
}
void ClassOperator::printInfo()
{cout<ClassOperator tmp(r1.a - r2.a, r1.b - r2.b, r1.name - r2.name);
return tmp;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款