第四课

1,进制表示方法

例子:
	//十进制
	int dec1 = 520;
	//八进制
	int oct1 = 01010;
	//二进制
	int bin1 = 0b1000001000;
	//十六进制
	int hex1 = 0x208;

2,单引号隔开数字

int bin = 0b10'0000'1000;

3,auto自动类型推导

1,C++中使用auto自动类型推导

注意事项:
    1auto仅仅是一个占位符,编译时会被真正的类型替代;
    2auto不能在函数的参数中使用(但是可以作为函数的返回值)3,使用auto类型推导的变量必须立即初始化;
    4auto不能作用于非静态成员变量;
    5auto不能定义数组;
    6auto不能作用于模板参数;

4,for循环

1,C++中引入了基于范围的for循环;

定义:
    表达式1 :表达式2;
    表达式1:是范围内用于迭代的变量;
    表达式2:表示被迭代的范围;
例子:
    int arr[]={
   0,1,2,3};
    //一般用法
    for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
    {
   
        cout<<arr[i]<<endl;
    }
    //新用法
   for(int i: arr)
   {
   
       cout<<i<<endl;
   }

2,特点

·从数组的第一个元素开始,逐个赋值给迭代变量;

·不依赖于下标元素;

5,typeid

·typeid运算符用来获取一个表达式的类型信息,操作对象可以是表达式,也可以是数据类型;

用法:
typeid(datatype)//数据类型
typeid(expression)//表达式

·typeid会把获取到的类型信息保存到一个type_info类型的对象里面,并返回该对象的常引用;当需要具体的类型信息时,可以通过成员函数来提取;

//获取一个普通变量的类型信息
int n=999;
const type_info& nInfo=typeid(n);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:int .H 3440116983

//获取一个字面量的类型信息
const type_info& nInfo=typeid(3.14);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:double .N 3406561745

//获取一个普通类型的类型信息
const type_info& nInfo=typeid(char);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:char .D 3238785555

//获取一个表达式的类型信息
const type_info& nInfo=typeid(20*44);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:int .H 3440116983

·name():用来返回类型的名称;

·raw_name():用来返回名字编码;

·hash_code():用来返回当前类型对应的hash值,hash值是一个可以用来标志当前类型的整数,

6,内联函数

·C++提供了一种操作方式,允许编译时直接把函数替换到调用处;

定义:在函数前面加上inline声明为内联函数;

1,不能存在任何形式的循环语句;
2,不能存在过多的条件判断语句;
3,函数体不能过于庞大;
4,不能对函数进行取址操作;