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++服务器课程