以下介绍一段C++操作符关于操作符重载的程序,让它将变量递增10而不是递增1,操作符过载是个高级C++技术,在使用时一定会使许多编程人员头花眼胀的,好了看了本文你就会解决这些事情。
如下表所示。常用C++操作符说明举例:
- + 加 x=y+z;
- - 减 x=y-z;
- * 乘 x=y*z;
- / 除 x=y/z;
- 赋值运算符
- = 赋值 x=10;
- += 赋值与和 x+=10;(等于xx=x+10;)
- -= 赋值与减 x-=10;
- *= 赋值与乘 x*=10;
- \= 赋值与除 x\=10;
- &= 赋值位与 x&=0x02;
- |= 赋值位或 x|=0x02;
- 逻辑操作符
- && 逻辑与 if(x && 0xFF) {...}
- || 逻辑或 if(x || 0xFF) {...}
- 等式操作符
- == 等于 if(x == 10) {...}
- != 不等于 if(x != 10) {...}
- < 小于 if(x < 10) {...}
- > 大于 if(x > 10) {...}
- <= 小于或等于 if(x <= 10) {...}
- >= 大于或等于 if(x >= 10) {...}
- 一元操作符
- * 间接操作符 int x=*y;
- & 地址操作符 int* x=&y;
- ~ 位非 x &=~0x02;
- ! 逻辑非 if(!valid) {...}
- ++ 递增操作符 x++(等于xx=x+1;)
- -- 递减操作符 x--;
- 类和结构操作符
- :: 范围解析 MyClass :: SomeFunction();
- -> 间接成员 MyClass-> SomeFunction();
- · 直接成员 MyClass . SomeFunction();
可以看出,这个清单长了些,没法一下子记住。使用C++时,你会慢慢熟悉这些操作符的。必须指出,递增操作符既可用作前递增(++x),也可用作后递增(x++)。前递增操作符告诉编译器先递增再使用变量,而后递增C++操作符则让编译器先使用变量值再递增。例如下列代码:
- int x = 10;
- cout << "x = " << x++ << end1;
- cout << "x = " << x << end1;
- cout << "x = " x << end1;
- cout << "x = " << ++x << end1;
- x=10
- x=11
- x=12
- x=12
递减操作符也是这样,这里不想将这些内容讲得太深,但读者可以耐心阅读下去,正如彭兹对奥古斯特所说,“奥古,耐心点,罗马不是一天建成的”。说明 在C++中操作符可以过载(overload)。
编程人员可以通过过载标准操作符让它在特定类中进行特定运行。例如,可以在一个类中过载递增操作符,让它将变量递增10而不是递增1。操作符过载是个高级C++技术,本书不准备详细介绍。
你也许会发现,有些操作符使用了相同的符号。符号的意义随情境的不同而不同。例如,星号(*)可以作为乘号、声明指针或取消指针引用。这初看起来有点乱,事实上,C++编程老手有时也觉得有点乱。多实践,你会慢慢适应的。本书有许多例子介绍这些C++操作符。读者不必死记每个操作符的作用,而可以在学习中通过程序和码段去理解其作用。
C++中的函数
函数是与主程序分开的码段。这些码段在程序中需要进行特定动作时调用(执行)。例如,函数可能取两个值并对其进行复杂的数学运算。然后返回结果,函数可能取一个字串进行分析,然后返回分析字串的一部分。
新术语 函数(function)是与主程序分开的码段,进行预定的一个服务。函数是各种编程语言的重要部分,C++也不例外。最简单的函数不带参数,返回void(表示不返回任何东西),其它函数可能带一个或几个参数并可能返回一个值。函数名规则与变量名相同。图1.5显示了函数的构成部分。新术语 参数(parameter)是传递给函数的值,用于改变操作或指示操作程度。 #t#
这个程序的11到14行用标准输入流cin向用户取两个数字,第15行调用multiply()函数将两个数相乘,第16行调用showResult()函数显示相乘的结果。注意主程序前面第5和第6行C++操作符的原型声明。原型中只列出了返回类型、函数名和函数参数的数据类型。
这是函数声明的最基本要求。函数原型中还可以包含用于建档函数功能的变量名。例如,multiply()函数的函数声明可以写成如下:int multiply(int firstNumber,int secondNumber);这里函数multiply()的作用很明显,但代码既可通过说明也可通过代码本身建档。注意清单1.4中函数multiply()的定义(22到25行)在主函数定义码段(8到20行)之外。