该文被密码保护。 阅读全文
该文被密码保护。 阅读全文
摘要:
后置递增运算符的优先级高于解引用运算符! *p++ 等价于 *(p++) 但是,我们*p++的求值结果不可理解为p+1指向的对象的值,而应该是p指向的对象的值。 这是由于后置++的特性引起的。 *p++:把p的值加1,然后返回p的初始值(即未加1)的副本作为其求值结果,此时解引用运算符的运算对象是p 阅读全文
摘要:
一、引子 我们所谓的左值、右值,正确的说法应该是左值表达式、右值表达式。 因为C++的表达式不是左值就是右值。 在C中,左值指的是既能够出现在等号左边也能出现在等号右边的表达式,右值指的则是只能出现在等号右边的表达式。 而在C++中,二者的区别就不是这么简单了。 二、关键点 【官方定义】 归纳:当一 阅读全文
摘要:
一、关键点 书上称vector是一种标准库类型,我们认它一个类模板。当然它是一个容器。 我们说光光一个vector只是模板,vector<int>才是类型。 内置类型和类类型都可以构成vector对象,而引用除外,甚至vector也可以作为另一个vector的元素。 二、vector的初始化 vec 阅读全文
摘要:
一、关键点 1. 作用过程 遍历给定序列中的每个元素并对序列中的每个值执行某种操作。 2. 若要修改序列中元素的值,需将类型定义为引用 3. 只是查阅序列中元素的值,则可以不将类型定义为引用 注:“auto i”部分负责定义一个变量,每次迭代,这个变量会被初始化为序列中对应元素的值。 二、补充 fo 阅读全文
摘要:
一、string 1. 使用字符串字面值初始化string对象 如:string s1 = "hiya"; string s2("hiya"); 该字面值的最后那个空字符不会被拷贝到这个string对象中。 切记,字符串字面值是字符数组,与string是不同的类型。 2. 使用getline()读取 阅读全文
摘要:
一、关键词 从表达式的类型推断出要定义的变量的类型 示例:decltype(i) x = 0; //等价于int x = 0; 二、复合类型、const 1. 引用 和auto不同,当表达式为一个引用别名时,它不会将类型声明为该别名所绑定的对象的类型,而是保留为引用的类型。 2. const 和au 阅读全文
摘要:
一、关键点 auto让编译器通过初始值来推算变量的类型 如:auto i = 2; //等价于int i = 2; 二、与复合类型、常量的结合 1. 引用 以引用对象的类型作为auto的类型。 2. const auto会忽略掉顶层const,而底层const则会保留下来。 如果希望auto类型是一 阅读全文
摘要:
一、基础用法 二、类型别名指代复合类型 typedef char * pstring; const pstring cstr = 0; 上面用类型别名pstring指代char *,即pstring是指向char的指针,故const修饰的是指针,也即cstr是指向char的常量指针。 若我们尝试把类 阅读全文
摘要:
【常量表达式】 一个这样的表达式:值不会改变 && 在编译过程中就能够得到计算结果 常见的常量表达式:字面值、用常量表达式初始化的const对象 一个对象是不是常量表达式由它的数据类型和初始值共同决定: const int cc = 1; cc是一个常量表达式,因为它①是一个常量,②值在编译过程就能 阅读全文