C++概述(一)

1.C到C++类型增强

1.1 类型检查更严格

对于C

#include<stdio.h>

int main(){
    int const a = 10; //可以不赋初值,随机,编译通过 
    int *p = &a;    //&const int * --> int
    *p = 100;
    printf("%d", a);//此时a会改为100  明修栈道,暗度陈仓
    return 0;
}
//const int == int const
//const int *p   不能改地址但能改内容
//const int const *p 都不能改 

对于C++

#include<iostream>
using namespace std;

int main(){
    const int a = 100;    //不允许不赋初值
    //int * p = &a; -->不允许
    //C++ 不喜欢强制类型转换 
    return 0;
}

1.2 布尔类型 

C的逻辑真假是用 0 和 非0 来表示的,C++中有具体类型bool

bool flag = 100; // 非零等同于true 

实际上是用枚举类型enum实现的

enum BOOL{
    False, True
};
BOOL flag = False;
printf("%d", sizeof(bool));   // 1B

1.3 真正的枚举

对于C

enum DAY{
    Mon = 1, Tue, Men
}; 
enum DAY today;
//today = Men;    //输出3
today = 100; //输出100,可以 

对于C++

DAY today = 100;  //不允许
enum{
    Mon = 1, Tue, Men
}; //等价于宏定义,能用枚举或const 尽量不用宏

1.4 表达式

对于C

int a, b = 10;
a = b = 100; //100赋值给b,b=100表达式的值赋值给a
(a = b) = 100; //不可以 表达式不可以被赋值 

对于C++

int a, b = 10;
(a = b) = 100;    //形式上表达式可以被赋值 
//输出a = 100, b = 10 
  人生不如意的时候,是上帝给的长假,这个时候应该好好享受假期。
  突然有一天假期结束,时来运转,人生才是真正开始了。
原文地址:https://www.cnblogs.com/astonc/p/14268127.html