博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ Primer 读书笔记整理(一)
阅读量:4591 次
发布时间:2019-06-09

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

1.读取数量不定的输入数据时可以把cin语句放到条件判断语句中,如果流的状态有效则读取成功,否则读取失败。

例如:

while(cin>>value)       /* do something */

2.顶层const与底层const的区别

1)顶层const表示任意的对象是const(即常量)

例如:

const int value = 0;  // i是顶层const常量int i= 0;int *const ptr = &i;  //ptr是顶层const常量

2)底层const一般用在引用和指针中,表示指针所指的对象或引用所绑定的对象是常量

例如:

const int ci = 42;    //顶层constconst int &ref = ci   //ref是底层constconst int *ptr = &ci; //ptr是底层const

3.常量表达式和constexpr

      常量表达式是指其值不会改变并且在编译过程中就能得到计算结果的表达式。允许将变量声明为constexpr类型以便由编译器来验证变量

的值是否是一个常量表达式,如果不是将会报错。

      在constexpr声明中如果定义了一个指针,限定符constexpr仅对指针有效,而对指针所指的对象无关。

例如:

const int *p = nullptr; //p是一个指向整型常量的指针const int *q = nullptr; //q是一个指向整型的常量指针

      要注意以上两者的区别。

4.const与类型别名

     看以下代码:

typedef char *pstring;const pstring cstr = 0; //cstr是指向char的常量指针const pstring *ps;       //ps是一个指针,它的对象是指向char的常量指针

pstring本来是一个char型指针,但加上typedef后就表示一个类型,即char*类型,记住:const是对给定类型的修饰

 const pstring cstr = 0;的const修饰的是cstr,而 const pstring *ps; 中 的const修饰的是派生所指向的对象,ps本身不是常量,

如果为 const pstring * const ps; 则ps是一个常量指针,它指向的对象是指向char的常量指针,即ps为二重指针。

5.decltype

 decltype(表达式) 中,如果表达式的内容是解引用操作,则decltype将得到引用类型,例如:

int i = 12,*p = &i;//则decltype(*p)的结果类型是int&,而非int

切记:1) decltype((表达式)) (双层括号)的结果永远是引用而 decltype(表达式) 结果只有当表达式本身是引用时才是引用。

2)decltype作用于数组(或函数名)时得到的类型是数组(或函数)而非指向数组(或函数)的指针。(这句话在C++Primer中出现不下5次)

6.getline函数

      getline函数有成员版本和非成员版本,成员版本在标准库容器之中,这里介绍非成员版本。非成员版本形式为:

 getline(输入流,string对象,指定分隔符) ,函数从一个给定的输入流中读取对象,存入string对象中,直到遇到指定的分隔符为止,指定

的分隔符一般为换行符。

7.范围for语句

      形式为:

for(declaration:expression)    {
/* do something */}

其中expression部分是一个可迭代对象,declaration部分负责定义一个变量用于逐个访问可迭代对象中的每个元素,每次迭代,declaration部分

的变量都会被初始化为expression部分的下一个元素,例如:

vector
vec = {
1,2,3,4};for(int i:vec) std::cout<
<<' ';/* 将输出1 2 3 4 */

范围for语句的定义来源于与之等价的传统for语句:

for(auto beg = v.begin(),end = v.end();beg!=end;++beg)      { /* do something */}

注意:1)不能通过范围for语句增加vector或其他容器的元素。因为在范围for语句中预存了end()的值,一单在序列中添加元素,end函数的值可能就变得无效了。

2)范围for语句也可以用来遍历数组中的元素。

 

未完待续...

 

转载于:https://www.cnblogs.com/yibo141/p/4779662.html

你可能感兴趣的文章
hdoj - 1342 Lotto
查看>>
ued.taobao.com
查看>>
香港身份证
查看>>
(二)Python selenium
查看>>
7.装饰器的一些需求
查看>>
优雅就一个字——设计模式之数据上传接口
查看>>
js 数组中sort方法存在的问题
查看>>
Machine Learning - 第7周(Support Vector Machines)
查看>>
Zookeeper注册节点的掉线自动重新注册及测试方法
查看>>
【SVM】清晰明了的理论文章
查看>>
C#学习笔记_02_数据类型
查看>>
Flutter实战视频-移动电商-40.路由_Fluro的全局注入和使用方法
查看>>
ddd
查看>>
Excel 2013中设置密码保护表格数据不被修改的方法
查看>>
Flash中的隔离沙箱
查看>>
即点即用:在 21 世纪交付 Office
查看>>
AJAX表单提交以及数据接收
查看>>
用tensorflow学习贝叶斯个性化排序(BPR)
查看>>
ADO.NET的记忆碎片(四)
查看>>
浏览器的渲染过程
查看>>