C++ 类和对象 赋值运算符重载

07-17 1257阅读

前言:

在上文我们知道数据类型分为自定义类型和内置类型,当我想用内置类型比较大小是非常容易的但是在C++中成员变量都是在类(自定义类型)里面的,那我想给类比较大小那该怎么办呢?这时候运算符重载就出现了

一 运算符重载概念:

允许用户为自定义类定义或重新定义运算符的行为,使这些类在使用运算符时表现得像内置数据类型一样,从而提高代码的可读性和简洁性。

C++ 类和对象 赋值运算符重载

1.2 运算符重载与函数重载的区别:

我第一次听到这两个重载都傻傻的分不清楚,以为是一个意思。其实他们的区别可大了

函数重载:

函数重载是指在同一作用域中有多个同名函数,但它们的参数列表(参数的类型和数量)不同。编译器通过参数列表来决定调用哪个函数。函数重载的目的是为了提高代码的可读性和灵活性,使同一操作可以应用于不同类型的参数。

运算符重载:

运算符重载允许我们为用户定义的类型(如类)定义或重新定义特定运算符(如 +、-、*、/ 等)的行为。运算符重载函数的名称为 operator 后跟运算符符号。尽管这些函数的返回类型和参数列表与普通函数类似,但它们的目的是使自定义类型能够使用像内置类型一样的运算符。

1.3 运算符特点:

1 定义运算符重载函数:运算符重载是通过定义特殊的成员函数或全局函数来实现的

2 运算符重载函数的返回类型:通常是运算符操作后的结果类型。

3 运算符重载函数的参数:根据运算符的类型,参数可以是一个或多个。

4  * :: sizeof ?: . 注意以上5个运算符不能重载

3.1 代码解析:

运算符重载成员函数代码示例:

//成员函数 运算符重载
class Date 
{
public:
	int _x = 5;
	int _y = 4;
	int operator+(const Date& b)
	{
		return this->_x + b._x + this->_y + b._y;
	}
	//错误写法
	//int operator+(const Date& a , const Date& b)
	/*{
		return a.x + b.x + a.y + b.y;
	}*/
};
int main()
{
	//成员函数 运算符重载
	Date d1;
	Date d2;
	int sum = d1 + d2;
	std::cout _year = other._year;
		this->_month = other._month;
		this->_date= other._date;
	}
	//赋值运算符重载
	Date1 operator=(const Date1& d)
	{
		this->_year = d._year;
		this->_month = d._month;
		this->_date = d._date;
		return *this;
	}
	//输出
	void print()
	{
		std::cout 

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]