【蚕食C++】C++相对于C的增强

C++相对于C的增强
  1. C++对全局变量的定义检测能力增强了;

  2. C++定义一个变量,可以随用随定义;

  3. struct类型增强

    c语言的struct定义了一组变量的集合,c编译器并不认为这是一种新的类型;
    c++中的struct是一个新类型的定义声明

  4. 三目运算符
    C语言中,关于三目运算符,不可以作为左值使用除非使用地址
    C语言中的三目运算符
    C++中,三目运算符,可以当左值,实际上返回的是引用
    C++语言中的三目运算符

  5. const增强

    const 定义常量——意味着只读

    const int a;与int const b;意思相同,代表一个常整型数

    const int *c; c是一个指向常整型数的指针所指向的内存数据不能被修改,但是本身可以修改

    int * const d;d是常指针指针变量不能被修改,但是它所指向的内存空间可以被修改

    const int * const e;e是一个指向常整型的常指针指针和它所指向的内存空间,均不能修改

    在C++中,const修饰的变量,初始时并没有真正划分内存,只是在符号表中建立了一个键值对,只有编译阶段才会替换。类似于define,两者不同的是,define是在预处理阶段

    如,const in a=10;——a并没空间或地址,使用的是常量10替换。
    C++语言中的三目运算符

    那么a没有地址,赋值给p为什么没有报错?

    因为,此时a是一个常量10,那么在c++中,如果对一个常量取地址,编译器会临时开辟一个空间如temp,让这个指针存放这个临时空间的地址。
    因此,*p改变的是这个临时空间的数值,并没有修改a。这也是上面最终输出的值的原因。

  6. 枚举的增强
    c语言中枚举的本质就是整型,枚举变量可以用任意整型赋值;
    c++中枚举变量,只能用被枚举处理的元素初始化

C++语言中的三目运算符

发布了57 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43343803/article/details/104448863