现在的位置: 首页 > 综合 > 正文

我的c++笔记[3]

2014年08月19日 ⁄ 综合 ⁄ 共 1073字 ⁄ 字号 评论关闭

1.    在函数体内定义的内置数组,其元素均初始化为0;在函数体内定义的内置数组,其元素均无初始化;不管数组在哪定义,如果其元素为类元素(如string类),则自动调用该类的默认构造函数进行初始化。如果该类没有默认构造函数,则必须为该类数组元素提供显示的初始化。

2.    动态创建的数组,可以在句尾用()自动初始化数组中的值(默认值)。如int *a = new int[10]();//此时数组a中的所有元素的值为0。

3.    字符数组既可以用一组由花括号括起来、逗号隔开的字符字面值({'C', '+', '+'})进行初始化,也可以用一个字符串字面值(“C++”)进行初始化。然而,要注意这两种初始化形式并不完全相同,字符串字面值包含一个额外的空字符(null)用于结束字符串。

4.    与vector不同,一个数组不能用另外一个数组初始化,也不能将一个数组赋值给另一个数组。

5.    指针的概念很简单:指针用于指向对象。与迭代器一样,指针提供对其所指对象的间接访问,只是指针结构更通用一些。与迭代器不同的是,指针用于指向单个对象,而迭代器只能用于访问容器内的元素。

6.    指针的基本用途是为了能够在函数内修改“外部对象”。

7.    char*tmp = NULL; tmp++;//错误,不能这样使用++。正确的是char* tmp = new char[10];//举例为十个元素的数组。这样也可以:char*tmp = getCharA();//getCharA的返回值是char*;

8.    建议尽量避免使用指针和数组。许多有用的程序都可不使用数组或指针实现,现代C++程序采用vector类型和迭代器取代一般的数组、采用string类型取代C风格字符串。

9.    理解指针声明语句时,请从右向左阅读。(如 string *pstring;//把pstring定义为指向string类型对象的指针变量)

 

10. 何时使用const迭代器?又何时使用const_iterator?解释两者的区别。

答:const迭代器是迭代器常量,该迭代器本身的值不能修改,即该迭代器在定义时需要初始化,且初始化之后,不能再指向其他元素,若需要指向固定元素的迭代器,则可以使用const迭代器。

const_iterator是一种迭代器类型,对这种迭代器类型解引用会得到一个指向const对象的引用,即通过这种迭代器访问到的对象是常量。该对象不能修改,因此,const_iterator类型只能用于读取容器的元素而不能修改元素的值。若只需遍历容器中的元素而无需改变元素的值,则可用此类型。

【上篇】
【下篇】

抱歉!评论已关闭.