博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++学习总结---几个c++11的知识点
阅读量:3935 次
发布时间:2019-05-23

本文共 1794 字,大约阅读时间需要 5 分钟。

auto关键字

1.概念::auto不再是一个存储类型指示符,而是作为一个新的类型指 示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得.
注意:auto是一个根据给的数据确定类型的符号,可以说他不是一种"类型"的申明符,它更像是一个占位符,占着位置,给句位置上的数据给类型的符号,所以一定要初始化.

int TestAuto() {
return 10; } int main() {
int a = 10; auto b = a; auto c = 'a'; auto d = TestAuto(); cout << typeid(b).name() << endl; cout << typeid(c).name() << endl; cout << typeid(d).name() << endl; //auto e; 无法通过编译,使用auto定义变量时必须对其进行初始化 return 0; }

2.使用细则

(1) auto与指针和引用结合起来使用
用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&
(2)在同一行定义多个变量
当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个 类型进行推导,然后用推导出来的类型定义其他变量。

3.不可以使用的场景

(1)不能作为函数的参数
(2)不能直接用来申明数组
(3) auto不能定义类的非静态成员变量
(4)实例化模板时不能使用auto作为模板参数

基于范围的for循环

1.概念
对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因此C++11中引 入了基于范围的for循环。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二 部分则表示被迭代的范围
例如:

void TestFor() {
int array[] = {
1, 2, 3, 4, 5 };for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i) array[i] *= 2;for (int* p = array;p < array + sizeof(array)/ sizeof(array[0]); ++p) cout << *p << endl; }
void TestFor() {
int array[] = {
1, 2, 3, 4, 5 }; for(auto& e : array) e *= 2; for(auto e : array) cout << e << " "; return 0; }

2.使用条件

(1)循环范围必须是确定的
(2)迭代的对象要实现++和==的操作。

指针空值

1.概念
NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。不论采取何种定义,在 使用空值的指针时,都不可避免的会遇到一些麻烦
.2 nullptr 与 nullptr_t
为了考虑兼容性,C++11并没有消除常量0的二义性,C++11给出了全新的nullptr表示空值指针。C++11为什么 不在NULL的基础上进行扩展,这是因为NULL以前就是一个宏,而且不同的编译器厂商对于NULL的实现可能 不太相同,而且直接扩展NULL,可能会影响以前旧的程序。因此:为了避免混淆,C++11提供了nullptr, 即:nullptr代表一个指针空值常量。nullptr是有类型的,其类型为nullptr_t,仅仅可以被隐式转化为指针类 型,nullptr_t被定义在头文件中:
typedef decltype(nullptr) nullptr_t;

注意:

  1. 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。
  2. 在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。
  3. 为了提高代码的健壮性,在后续表示指针空值时建议好使用nullptr。

转载地址:http://fkrgn.baihongyu.com/

你可能感兴趣的文章
微服务分布式事务
查看>>
python搭建简易web服务器,局域网
查看>>
mac下载iterm2,以及安装及配置rz sz(转载)
查看>>
12306并发解决思路(转)
查看>>
Mysql之group by GROUP_CONCAT的保证顺序
查看>>
selenium入门--环境搭建
查看>>
Katalon--Mac环境搭建,Mobile之Android调试
查看>>
java调用webservice的2种方式代码
查看>>
GitHack针对.git的漏洞以及修复
查看>>
Mac安装Tesseract,使用Tess4j实现OCR识别
查看>>
CAS了解以及Java中CAS应用
查看>>
Java魔法师Unsafe
查看>>
Spring-Retry应用集成重试机制
查看>>
eureka分析
查看>>
MySQL索引-B+树【转】
查看>>
一次JVM_OLD区占用过高、频繁Full GC的解决过程【转】
查看>>
Spring Cloud Hystrix源码分析(转)
查看>>
spring cloud zull
查看>>
spring cloud feign(转)
查看>>
protobuf数据结构化和数据序列化
查看>>