读《C++Primer》第三天
来源:互联网 发布:张秀硬笔行楷 知乎 编辑:程序博客网 时间:2024/04/28 04:07
觉得自己的编程能力一塌糊涂,就决定把《C++Primer》好好看看,学到了许多自己以前没有注意的地方,觉得蛮有收益的,于是分享下……或许这些在那些大侠看起来都很不起眼,却是我一天的喜悦!
14、vector不是一种数据类型,而是一个类模板。可以用来定义任意多种类型;
如:vector<int> ivec;
vector<string> svec;
而vector对象的重要属性就是在于可以在运行时高效的添加元素。
15、指针和引用的比较
引用和指针都可以间接访问另一个值,但他们之间有重要的区别:
第一个区别:引用总是指向某个对象:定义时没有初始化是错误的;
第二个区别:给引用赋值修改的是该引用所关联的值,而不是使引用与另一个对象关联。
16、创建动态数组
每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区(free store)或者堆(heap)。而动态分配数组时,只需要指定类型和数组长度,不必为数组对象命名,new表达式返回指向新分配数组的第一个元素的指针:
int *pia = new int[10];
还允许动态分配空数组
size_t n = get_size();
int *p = new int[n];
for(int *q = p; q != p+n; ++q)
/*process the array*/
然后要释放掉内存 delete [] pia;
17、在C++语言中允许将多个赋值操作写在一个表达式中:
int ival, jval;
ival = jval = 0; //OK
18、只有在必要的时候才使用后置操作符
因为 后置操作符必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。对于更多的复杂迭代器类型,这种额外工作可能花费更大的代价。
19、语句的作用域
在条件表达式中定义的变量必须初始化,该条件检验就是初始化对象的值:
如 while(int i = get_num())
cout<<i<<endl; //error
20、悬垂else:所有语言的if语句都普遍存在着潜在的二义性。这种情况往往称为悬垂else。通过将else匹配给最后出现的尚未匹配的if子句来解决这个问题。
21、关于switch子句
对于一个switch子句程序是从该点开始执行,并跨越case边界继续执行语句,知道switch结束或遇到break语句为止;
一个有趣的程序:
switch(ch)
{
// alternative legal syntax
case:'a' case:'e' case:'i' case:'o' case:'u' ;
++vowelCnt; //统计元音字母的个数
break;
}
- 读《C++Primer》第三天
- 初学者:学习C++第三天,教材是C++primer
- C++ Primer学习第三天
- 读《C++Primer》 第一天
- C语言第三天
- C语言第三天
- c第三天
- C语言第三天
- c/c++第三天
- Object-C 第三天
- C专家编程第三天
- C语言的第三天
- C语言学习第三天
- 标准C语言第三天
- C++primer第七天
- 初学者:C++primer 第五天
- C 学习笔记3 第三天
- C语言之第三天目标
- 2011 ACM/ICPC 湖南区域赛
- 创建远程线程注入DLL
- Java对象池技术的原理及其实现
- KERNEL32相关函数
- web test
- 读《C++Primer》第三天
- 研习Objective-C几日总结
- 类型转换
- mysql alter table
- Red Hat Enterprise Linux 5(32Bit/64Bit)安装Oracle(10g/11g)!!!
- 20110530
- Oracle 并行执行( Parallel Execution)原理初探
- enum[枚举]_基本特性
- 编译 boost