zoukankan      html  css  js  c++  java
  • C++ 重载运算符简单举例

    我们可以重定义或重载大部分 C++ 内置的运算符。这样,就能使用自定义类型的运算符。
    重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。

    Box operator+(const Box&);
    

    声明加法运算符用于把两个 Box 对象相加,返回最终的 Box 对象。大多数的重载运算符可被定义为普通的非成员函数或者被定义为类成员函数。如果我们定义上面的函数为类的非成员函数,那么我们需要为每次操作传递两个参数,如下所示:

    Box operator+(const Box&, const Box&);
    

    下面的实例使用成员函数演示了运算符重载的概念。如下所示:

    #include <iostream>
    
    using namespace std;
    
    class Person{
    public:
    	Person(int num) : age(num){}
    	
    	/* 类成员函数 */
    	int operator+(const Person &temp){
    		return (this->age+temp.age);
    	}
    	
    	int age;
    };
    
    /* 非类成员函数 */
    int operator-(const Person &a, const Person &b){
    	return (a.age-b.age);
    }
    
    int main()
    {
    	Person John(20), Tom(18);
    
    	cout << John+Tom << endl;
    	cout << John-Tom << endl;
    	
    	return 0;
    }
    

    可重载运算符/不可重载运算符

    下面是可重载的运算符列表:

    分类 符号
    双目算术运算符 + (加),-(减),*(乘),/(除),% (取模)
    关系运算符 ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于)
    逻辑运算符 (逻辑或),&&(逻辑与),!(逻辑非)
    单目运算符 + (正),-(负),*(指针),&(取地址)
    自增自减运算符 ++(自增),--(自减)
    位运算符 (按位或),& (按位与),~(按位取反),^(按位异或),,<< (左移),>>(右移)
    赋值运算符 =, +=, -=, *=, /= , % = , &=, ^=, <<=, >>=
    空间申请与释放 new, delete, new[] , delete[]
    其他运算符 ()(函数调用),->(成员访问),,(逗号),(下标)

    下面是不可重载的运算符列表:

    . :成员访问运算符
    .*, ->* :成员指针访问运算符
    :: :域运算符
    sizeof :长度运算符
    ?: :条件运算符
    # :预处理符号
    

    参考自《 runoob 》

  • 相关阅读:
    egg-sequelize-ts 插件
    从理解webpack到配置
    jstree 学习
    谈谈对原型链的理解
    CSS 水平居中/布局 垂直居中 (月经问题)
    图片自然翻转并切换图片
    Javascript 高阶函数等
    django中related_name的作用和用法
    pycharm新建django项目,报错
    关于pycharm 使用sqlite创建数据库表,创建模型后,表找不到或者不显示。
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/8470419.html
Copyright © 2011-2022 走看看