C++类和对象提前知识储备汇总2

auto关键字

auto关键字在C语言中几乎很少用到,它是声明一个变量是局部变量。常常被省略。

但是在C++11中 auto 关键字是自动识别类型

double  a=1.67;

auto b=a;    auto自动推导 b是 double类型的

我们可以打印b的类型来观察
cout<<typeid(b).name()<<endl;

 auto识别在这里意义不大,但是在C++以后学习map的时候可以用auto来自动识别一个长的类型名字

注意auto关键字自动去除const,

比如    const char ch='A';

        auto b= ch;  则这个auto实际上是  char 而不是const char

 auto 的两不能:

auto不能作为函数的参数,因为auto必须初始化。

auto 不能作为数组的类型,编译器不能识别数组里面的元素的类型。auto[10]是错误的

一个语法糖:auto 范围for循环

平常我们遍历数组写的比较麻烦。用auto之后会比较简单。

int arr[10]={1,2,3,4,5,6,7,8,9,10};

for(auto e : arr)

{

cout<<e<<endl;

}

把arr 所有元素依次赋值给e然后再打印

其实也可以这样写

for(int e :arr)

{

cout<<e<<endl;

}

但是用auto写更爽,让它自动识别

其实这个e是数组的拷贝 ,如果传引用呢?

传引用就实际上每次调用一次循环e就是 每一个arr

可以修改数组。但是e的声明周期还是这个循环,循环结束就被销毁了。

而如果不使用&就不会修改数组里面的内容 而是修改的拷贝的

e。这实际上就是传引用的一个作用:修改形参来影响实参(输出型参数) 

这样写为什么不行?

因为传参的时候数组名是一个地址 而如果要用范围for就要传入整个数组,再一个个给e

C++中空指针常常写为nullptr 而不是写成NULL 

NULL是一种宏定义 实际上编译的时候转换为0  ,nullptr才是纯正的空指针,类型是type*

也就是NULL默认被识别为0 如果需要让它变为指针需要对它进行强制类型转换,这个题目中转换为(int *)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值