[006]为什么C++会被叫做是C++?

先了解一下自增和自减的运算符:

自增(++)和自减(--)操作符为对象提供加1或减1操作:

int i = 0, j;
j = ++i; // j = 1, i = 1: prefix yields incremented value
j = i++; // j = 1, i = 2: postfix yields unincremented value

因为前置操作返回加1后的值,所以返回对象本身,这是左值。而后置操作返回的则是右值

一个具体的例子来区分这个左值和右值:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void F(int a) {
 5     cout << a <<endl;
 6 }
 7 
 8 int main() {
 9     int i = 0;
10     F(i);
11     ++i = 10;      // OK ++i is a l-value
12     // i++ = 20;   // Error i++ is a r-value
13     F(i);
14 
15     return 0;
16 }

显示结果为:

svpm-dev# ./foo
0
10

前置操作需要做的工作更少,只需要加1后返回加一后的结果即可。而后置操符必须先保存操作数原来的值,以便返回加一之前的值作为操作的结果。

对于int型对象和指针,编译器可能优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能会花费更大的代价。

------------------------------------------------------------------------------------------------------------------------------

再回到C++为什么是C++这个问题上来,为什么不是++C呢?

C++的C说明了它本质上是从C语言演化过来的,C++语言是C语言的超集,是在C语言基础上进行的扩展(引入了new、delete等C语言中没有的操作符,增加了面向对象程序设计的支持,等等),是先有C语言,在进行C++。

根据自增操作符前、后置形式的差别,C++表示对C语言进行扩展之后,还可以使用C语言的内容,而写成++C则表示无法再使用C的原始值了,也就是说C++不能向下兼容C了,这与实际情况不符。

原文地址:https://www.cnblogs.com/hustcser/p/3635841.html