C++朝花夕拾(拾遗).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++朝花夕拾(拾遗) C++拾遗 Posted on 2012 年 2 月 5 日 by gemfield 82 views 本文章记录gemfield在使用c++的过程的学习总结。内容无关于刁钻的语法,都是一些平常要用到的容易疏漏的地方。gemfield将不定期更新。 1、类的静态函数不能访问非静态数据; 原因:因为静态成员函数不传递this指针, 不和具体实例关联, 所以不能访问非静态member, 多用于callback。 2、类的静态函数不能声明为const、volatile、virtual; static没有this指针,而这些的实现要求有this指针。 3、类的const成员函数不能改变对象的普通数据成员,但可以改变static和mutable的数据成员。 4、const对象只能调用const成员函数。 5、const可以用作函数重载的依据之一,和参数类型、返回值类型一样。 6、类的成员函数在调用会插入一个ClassName *Const this指针作为参数;而类的const成员函数在调用的时候会插入const ClassName *Const this指针作为参数。 7、没有指向引用的指针,因为引用并没有开放给外部的地址空间(不像普通的变量)。切记,把引用看作是变量的别名。 8、const引用是指不能通过引用改变变量的值,而非变量的值不能被修改;const 引用可以初始化为不同类型的对象或者初始化为右值(非const引用不可以): int i=5; const int j=i; i=4;//合法 j=4;//非法!! ———————– int x=3; const int r=x; //正确 int const r=x; //未定义,可能被编译器忽略,因为引用本来就是const(初始化后不能重新绑定) ——————– const int ival = 1024;//ival为const int ref2 = ival;//错误!把一个const int 引用为非const类型 —————– int a =719;//错误 const int a = 719;//正确,const引用可以初始化为右值 9、常量指针与指针常量: char const *p //指向const字符的指针,这个const字符的值不能改变 const char *p //同上,也是常量指针 char * const p //指针本身是const ,不能改变指针的指向,但可以改变字符的内容,是指针常量 10、下列四种情况必须使用类的初始化列表: a、初始化引用(reference)成员; b、初始化 const 成员; c、调用基类的构造函数,并且该基类的构造函数有参数时; d、调用一个类成员的构造函数,并且它有参数时。 同时暗示着,如果有上面的四种情况,那么必须有构造函数来初始化它们。 11、iostream,输入输出流,流(stream)这个单词的意思是:试图说明字符是随着时间顺序生成或消耗的。 12、与其他变量不同,除非特别说明(extern),在全局作用域声明的 const 变量是具有文件作用域的局部变量。不能被其他文件访问。通过指定 const 为 extern(也即 extern const int a = 4;)可以跨文件作用域。 13、枚举成员是常量表达式,并且枚举成员值可以是不唯一的: enum CivilNet { gemfield = 2, //2 leaflower,//3 syszux = 3, //3 civilnet_cn//4 }; 14、const char name[8] = “Gemfield”; // error: Gemfield is 9 elements 15、一个数组不能用另外一个数组初始化,也不能将一个数组赋值给另一个数组。 16、指针和 typedef typedef string *pstring; const pstring cstr;//string *const cstr而非const string *cstr 17、可使用跟在数组长度后面的一对空圆括号,对数组元素做值初始化: int *gemfield = new int[10] (); //初始化为0 这种方法在const 对象的动态数组中就有用了: const int *gemfield= new const int[100]();//必须初始化 不过这样的数组用处不大。 18、数组指针: int *ip[4]; // 数组里面包含4个指针,指向int int (*ip)[4]; // 指向一个包含有4个int的数组 注意[]的优先级要高。 19、后自增、自减运算

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档