C++中的运算符与函数

C++中的运算符与函数

从语法层面看,除使用关键字 operator 外,运算符与函数几乎没有差别。运算符声明看起来与函
数声明极其相似:

return_type operator operator_symbol (...parameter list...);

其中 operator_symbol 是程序员可定义的几种运算符类型之一。可以是+(加)、 &&(逻辑 AND)
等。编译器可根据操作数区分运算符。那么, C++在支持函数的情况下为何还要提供运算符呢?
来看封装了年、月、日的实用类 Date:

Date holiday (12, 25, 2016); // initialized to Dec 25, 2016

如果要将这个 Date 对象指向下一天( 2016 年 12 月 26 日), 下面两种方法哪种更方便、 更直观呢?
• 方法 1(使用递增运算符):

++ holiday;

• 方法 2(使用成员函数 Increment( )):

holiday.Increment(); // Dec 26, 2016

显然,方法 1 优于方法 2。基于运算符的机制更容易使用,也更直观。通过在 Date 类中实现运算
符<,将可以像下面这样对两个 Date 实例进行比较:

if(date1 < date2)
{
    // Do something  

}
else
{
    // Do something else
}

运算符并非仅能用于管理日期的类。想想程序清单 9.9 所示的实用字符串类 MyString 吧,加法运
算符( +)让您能够轻松地拼接字符串:

MyString sayHello ("Hello ");
MyString sayWorld (" world");
MyString sumThem (sayHello + sayWorld); // if operator+ were supported by
MyString

要实现相关运算符,需要做额外的工作,但类使用起来将更容易,因此值得这样做。

C++运算符分两大类:单目运算符与双目运算符。

点击这里进行学习:零声学院C/C++服务器课程