189 8069 5689

c++重载运算-创新互联

背景

在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元起,快前往官网查看详情吧


当前名称:c++重载运算-创新互联
本文URL:http://cdxtjz.cn/article/dgcpeo.html

其他资讯