//
const text *ps; // ps 是一个指针,它的对象是指向 int 的常量指针 int * cosnt *ps;
typedef char *pstring ;
const pstring cstr = 0; // cstr 是指向char 的常量指针
const pstring *ps; // ps 是一个指针 ,它的对象是指向 char 的常量指针
2.5.2 auto 类型说明符
C++11 新标准引入了auto’类型说明符,用它就能让编译器替我们去分析表达式的所属的类型;auto让编译器通过初始值来推断变量类型。显然,auto定义的变量必须初始值。
auto item = val1+val2; //item 定义的变量必须有初始值
复合类型 常量 和auto
Auto一般会忽略顶层const,同时底层const则会保留下来。例如:
const int ci = i,&cr = ci;
auto b = ci;// b 是一个整数 ( ci的顶层const特性被忽略掉了) auto c = cr;// c 是个整数 (cr是ci的别名,ci本身是一个顶层const) auto d = &i;// d 是一个整数的指针 (整数的地址就是指向整数的指针)
auto e =&ci;// e 是一个指向整数常量的指针(对常量对象取地址是一种底层const)
如果希望推断出的auto类型是一个顶层const,需要指明: Const auto f = ci; 还可以设置引用类型为auto,
auto &g = ci;
坚持就是胜利,每天写一点,每天都有一点进步,加油!!!
auto &h = 42; cosnt auto &j = 42;
2.5.3 decltype类型指示符
C++11新标准引入了第二中类型说明符decltype,它的作用是选择并返回操作数的数据类型。在此过程中,编译器分析表达式并的它的类型,却不实际计算表达式的值。
decltype (f()) sunm = x; // sum 的类型就是函数 f 的返回类型
decltype 处理顶层cosnt 和引用的方式与auto有些方式不同。
const int ci = 0,&ci = ci;
decltype(ci) x =0; // x 的类型是cosnt int
decltype(cj) y =x; // y 的类型cosnt int&,y 绑定到变量x decltype(cj) z; // 错误:z是一个引用,必须初始化
decltype 和 引用----(这里看不懂)------P63页 2.6 自定义的数据结构 第
3章 字符串,向量,和数组
3.1 命名空间的using声明 3.2 标准库类型string
3.2.1 定义和初始化string 对象
string s1; //默认初始化,s1 是一个空的字符串 string s2 = s1; // s2 是 s1 的一个副本 string s3 = \ // s3 是该字符串字面值的副本 string s4(10,'c') //s4 的内容是10个c
坚持就是胜利,每天写一点,每天都有一点进步,加油!!!
直接初始化----------不使用= 拷贝初始化-----------使用=
string s5 =\ //拷贝初始化 string s6(\ //直接初始化 string s7(10,'c'); //直接初始化,
string s8 = string(10,'b'); //创建一个临时对象进行拷贝
3.2.2 string对象的操作
string s; //空字符串,
cin>>s; //将string对象读入s,遇到空白停止 cout<
说明:输入“ Hello World ”,输出是“Hello”,输出没有空格。即就是输入开始的空格不计,再遇到空格结束。
string s1,s2; //空字符串,
cin>>s1>>s2; //将string对象读入s,遇到空白停止 cout< 说明:输入“ Hello World ”,输出“Hello”,输出的是“Hello World” 使用getline读取一整行 string line; while( getline(cin,line)) cout< return 0; return 0; 坚持就是胜利,每天写一点,每天都有一点进步,加油!!! string 的 empty 和 size 操作 string::size_type 类型 在C++11新标准中,允许编译器通过auto 或者 decltype 来推断变量的类型 auto len = line.aize(); /// len 的类型是 string::size_type 比较 string 对象 字面值和string 对象的相加 string s1=\string s3 = s1 + \cout< 当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string: // // string s1=\string s3 = s1 + \cout< string s10 = \这样也正确 string s5 = \ //两个运算对象不是string string s6 = s1 + \ string s7 = \不能把字面值直接相加 string tmp = s1 + \ // s6 = tmp + \ ; // string s8 = (\不能把字面值直接相加 坚持就是胜利,每天写一点,每天都有一点进步,加油!!! 注意:C++中字符串字面值并不是标准库中类型string的对象。字符串字面值和string是不同的类型。 3.2.3 处理string对象的字符 3.3 标准库类型vector Vector是模板而非类型,有vector生成的类型必须包含vector中元素的类型, 3.3.1定义和初始化vector对象 vector vector 列表初始化vector对象 vector vector 值初始化---可以只提供vector对象容纳的元素数量而 vector vector 3.3.2 向vector对象中添加元素 vector for (i = 0; i < 100; ++i) 坚持就是胜利,每天写一点,每天都有一点进步,加油!!! 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++ Primer学习笔记(3)在线全文阅读。
相关推荐: