• [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了,这与实际情况不符。

  • 相关阅读:
    uva------(11464)Even Parity
    java SE学习之线程同步(详细介绍)
    MFC学习之窗口基础
    java多线程的常用方法(以及注意事项)
    java多线程下如何调用一个共同的内存单元(调用同一个对象)
    java之多线程(Thread)
    HDUOJ------3336 Count the string(kmp)
    hduoj------2594 Simpsons’ Hidden Talents
    POJ--2158--------------Milking Grid(最小覆盖字符矩阵)---(开二维kmp)
    poj-------------(2752)Seek the Name, Seek the Fame(kmp)
  • 原文地址:https://www.cnblogs.com/hustcser/p/3635841.html
Copyright © 2020-2023  润新知