1、不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化,如果该类没有默认构造函数,则必须为该数组的元素提供显示初始化。
2、用字符串初始化数组时,注意字符串末尾有null,数组的长度必须大于或等于字符个数加1,否则将产生越界错误。
3、尽量避免使用数组和指针,我们可以用vector和迭代器取代一般的数组,用string类型取代C风格字符串。
“string* ps1, ps2;”实际上只把ps1定义为了指针,如果也想把ps2也定义为指针,则应写成“string* ps1, *ps2;”。
4、假设给出以下语句:
typedef string *pstring; const pstring cstr;
5、“const pstring cstr;”等价于“string * const cstr;”,而不是“const string *cstr;”,且等价于“pstring const cstr”。
6、new动态分配数组时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化,如果元素是内置类型则不初始化。
7、
const int *pci_bad = new const int[100]; //错误,因为const对象的动态数组必须初始化 const int *pci_bad = new const int[100]( ); //正确,圆括号要求编译器对数组初始化,即全置0 const string *pcs = new const string[100]; //正确,编译器将调用string类的默认构造函数初始化
8、C++虽然不允许定义长度为0的数组变量,但调用new动态创建长度为0的数组是合法的。
9、在关键字delete和指针之间的方括号对是必不可少的,它告诉编译器该指针指向的是自由存储区中的数组而不是单个对象。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。
呵呵 正常正常 要是换作你们专业的东西 我也一窍不通的 😛
多谢支持 😛