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