C程序语言设计-Read.PPTVIP

  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程序语言设计-Read

C++程序语言设计 Chapter 6: 综合一 C++句柄类 class objClass { public: int i; private: int j; public: int k; } C++访问控制只针对编译器有效,在内存中则一视同仁。 如何突破访问控制的限制,直接访问类的私有数据成员? C++句柄类 隐藏实现 减少重复编译 参见Handle0.cpp、Handle0.h 注意:“Cheshire* smile;”,为什么? C++句柄类 实际示例 尽量隐藏类数据成员,仅提供公共的类成员函数接口。 参见代码,其中: handle.h是暴露给client的唯一接口; handle.cpp是handle class的实现,无须暴露; body.h和body.cpp是body class的实现,无须暴露; client.cpp是client的范例。 C++句柄类 编译方法 g++ -c handle.cpp g++ -c body.cpp ar rcs libimpl.a handle.o body.o handle.h是暴露给client的唯一接口,因此client只要在其文件里包含handle.h就可以了。 g++ client.cpp libimpl.a -o client Make 以上的编译步骤可以利用配置文件自动完成 批处理文件.bat make-makefile ant-build.xml Make make的行为 target ... : prerequisites ... command 一句话,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。 Make 宏 后缀规则 默认目标 参考《跟我一起写Makefile》 利用Eclipse和CDT编译C++ Eclipse CDT 插件安装方式 参考文章 常量 const and #define const用于定义常量,用const定义的常量必须进行初始化,而且初始化必须在定义的地方 对于const定义的常量,编译器可以对其进行数据静态类型安全检查 对于#define宏定义的常量,编译器只是进行简单的字符替换,没有类型安全检查,且会出错 #define N 100 #define M 200 + N N * M; //100 * (200 + N)还是100 * 200 + N 常量 const and #define 有些调试程序可对const进行调试,但不对#define进行调试 当定义局部变量时,const作用域仅限于定义局部变量的函数体内 用#define时其作用域不仅限于定义局部变量的函数体内,而是从定义点到整个程序的结束点 如果想让一个值不变,就应该使之成为const 常量 指针与const int* const p; //p++; //修改p本身,Error //*p = 2; //OK const int* p; //p++;//OK // *p = 2; //Error const int* const p; //指针p本身是不能被修改并且p所有有效的内容也不能被 修改 *p = 2; Error 和 p++; Error int const* p; ??? 常量 const与类型检查 可以把一个非const对象赋给一个指向const的指针,因为有时候我们不想从这个指针来修改其对象的值; 不可以把一个const对象赋值给一个非const指针,因为这样可能会通过这个指针改变指向对象的值 使用类型强制转换可以通过指针改变const对象 const int r=100; int * ptr = const_castint*(r); 常量 const与函数参数及返回类型 值传递时不需要加const修饰 指针传递时,加const修饰可防止意外修改指针指向的内存单元,起到保护作用 当输入参数为用户自定义类型或抽象数据类型时,应该将“值传递”改为“const 传递”,目的可以提高效率 const修饰函数返回类型用法类似,仅仅修饰的对象变成一个返回对象 常量 const类成员和const成员函数 const类成员在构造期间会允许被初始化并且在以后不能被改变。 const成员函数的描述: 返回类型说明符 函数名 (参数列表) const; 如果一个成员函数不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,这大大提高了程序的健壮性 常量 const记忆法则 const修饰后面一个最近的名称 const in

文档评论(0)

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

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

1亿VIP精品文档

相关文档