1. 类定义可以由于#include的使用而在不同源文件里重复出现,这样并不违反唯一定义规则
2. class的const成员函数不能修改class 成员变量
3. 对于const或者非const对象都可以调用const成员函数,而非const成员函数则只能对非const对象调用 p205
4. 在类X的非const成员函数里,this 的类型就是X*;在类X的const成员函数里 this 的类型就是const X* p206
5. 包含const或引用成员的类不能进行默认构造,必须在构造函数的初始式中进行初始化 p218,222
6. union成员不能有构造函数和析构函数 ?? p218
7. 复制构造函数完成对未初始化的存储区的初始化,复制赋值运算符则必须正确处理一个结构良好的对象。赋值运算符的一般性策略:防止自赋值,删除老元素,初始化,复制新元素。p220
关于string
1. string迭代器不做范围检查。string的下标运算符 [ ] 不进行范围检查,而 at() 则进行范围检查。如果对at()超范围访问,将导致out_of_range 异常。P516
2. 指针和数组的等价关系对 string 不成立,如果s 是 string,&s[0] 和 s 是不一样的 P516
3. string 的 length() 和 size() 是等价的,但是它们不能统计C风格的以0结束的字符串。 P517
4. 许多串操作以字符位置加上字符个数作为参数。如果所给的位置大于串的大小,则会抛出 out_of_range 异常,“过大”的字符计数值则简单地当作取出这个串“剩余”的字符,并不会抛出异常。 P517
5. 不能用单个字符对string 进行初始化,但是可以用单个字符对string 进行赋值。 P519
string s = 'a'; //wrong
string s2;
s2 = 'a'; //OK
6. string 的 data() 产生的是字符数组,而 c_str() 产生的是C风格字符串,即以0作为结束符。string 中可以包含0
字符。即0在 string中并不表示结束标记。?? data() 和 c_str() 产生的字符串存放与缓冲区中,如果要长期使用string的字符串表示,可以通过copy() 函数复制到一个数组中。 P520
char* c_string(const string& s)
{
char* p = new char[s.length()+1];
s.copy(p,s.length());
p[s.length()]=0;
return p;
}
分享到:
相关推荐
默认的浅拷贝构造函数在临时变量被析构时还会释放其中的动态元素内存,这时便会对其他部分产生影响,c++11前未仔细优化的代码大都直接编写深拷贝构造函数,但由于作为参数的临时性,这种行为是无必要的。 . 这时的...
介绍了android杂记:C++文件的添加log方法,有需要的朋友可以参考一下
非扫描版,带书签 如果你是一个完完全全的编程新手,本书不适合于你---- 你应该先看一本国内的C语言教材,他们虽然泛泛而谈,但至少可以让你了解具备一点最基本的C语言知识,而且不会让你感到太困难---比如潭老师的...
12.蛤蟆的Oracle杂记——Oracle等待事件性能监控脚本
Hadoop在蓝汛 说说Cloudera和它的产品们 运维杂记——几次重大事故
oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。
狱中杂记教学设计.pdf
installshield安装制作杂记 installshield x
第14章 Pythonic与Python杂记.mp4
包括 VC技术内幕第五版.chm VC知识库五.chm VC知识库六.chm VC知识库七.chm希望大家从中受益,相互交流,学问最重要的是交流,而不是相互抵斥团结起来我们的程序员兄弟们 世俗烦恼处,要耐的下 世事纷扰处,要闲的下...
李特伍德 一个数学家的杂记.pdf
适合学习51单片机初学者 我在学习过程中的一些学习笔记和随笔,在这里加以整理和修改,希望和大家一起分享,一起交流,一起学习,一起进步
concurrent 杂记
这是一个关于计算机基础知识的汇总 你可以从这里学习到关于计算机的一些基础的知识