编程语言
首页 > 编程语言> > c++运算符重载

c++运算符重载

作者:互联网

为什么要重载运算符?
如果不做特殊处理,C++ 的 +、-、*、/ 等运算符只能用于对基本类型的常量或变量进行运算,不能用于对象之间的运算。

有时希望对象之间也能用这些运算符进行运算,以达到使程序更简洁、易懂的目的。例如,复数是可以进行四则运算的,两个复数对象相加如果能直接用+运算符完成,不是很直观和简洁吗?

利用 C++ 提供的“运算符重载”机制,赋予运算符新的功能,就能解决用+将两个复数对象相加这样的问题。

运算符重载,就是对已有的运算符赋予多重含义,使同一运算符作用于不同类型的数据时产生不同的行为。运算符重载的目的是使得 C++ 中的运算符也能够用来操作对象。运算符重载的实质是编写以运算符作为名称的函数。

//一
struct Node{
	int x,y;
	bool operator <(const Node&w)const{//重载了小于符号
		if(y==w.y) return x<w.x;
		return y<w.y;
	}
}e[20];
sort(e+1,e+n+1);//重载了<运算符才能进行结构体之间的比较
/*加const是因为:
我们不希望在这个函数中对用来进行赋值的“原版”做任何修改。函数加上const后缀的作用是表明函数本身不会修改类成员变量。
加上const,对于const的和非const的实参,函数就能接受;如果不加,就只能接受非const的实参。
用引用是因为:(Node& W)
这样可以避免在函数调用时对实参的一次拷贝,提高了效率。*/

//二,重载对象之间的运算
class Box
{
   public:
 
      double getVolume(void)
      {
         return length * breadth * height;
      }
      void setLength( double len )
      {
          length = len;
      }
 
      void setBreadth( double bre )
      {
          breadth = bre;
      }
 
      void setHeight( double hei )
      {
          height = hei;
      }
      // 重载 + 运算符,用于把两个 Box 对象相加
      Box operator+(const Box& b)
      {
         Box box;
         box.length = this->length + b.length;
         box.breadth = this->breadth + b.breadth;
         box.height = this->height + b.height;
         return box;
      }

C++重载运算符的规则详解

https://www.cnblogs.com/summernight/p/8541079.html----C++重载运算符的规则详解
http://c.biancheng.net/view/222.html------C++运算符重载的概念和原理
https://blog.csdn.net/qq_36770641/article/details/89884807-----C++ 重载运算符使用const的原因

嘻嘻哈哈没有目标 发布了21 篇原创文章 · 获赞 6 · 访问量 1643 私信 关注

标签:breadth,函数,对象,C++,运算符,c++,重载
来源: https://blog.csdn.net/qq_44759750/article/details/103952512