- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OOP(C)_第3章_C中的C(最终版)
《面向对象程序设计》 中国科技大学计算机系 马建辉 第三章 C++中的C 面向对象程序设计(C++) 3.1 C++的词法及词法规则 3.1 C++的词法及词法规则(cont.) 3.1 C++的词法及词法规则(cont.) 3.2 数据类型简介 数据类型定义使用存储空间(内存)的方式。通过定义数据类型,告诉编译器怎样创建一片特定的存储空间,以及怎样操纵这片存储空间。 int i, j, k ; // 内定义类型 struct student stu[40]; // 结构体 Cstudent cstu[10]; // 类 3.2.1 基本内部类型 3.2.1 基本数据类型-修饰符 3.2.1 基本数据类型-修饰符(续) 3.2.1 基本数据类型-字长 3.2.1 基本数据类型-bool类型 C中:非0值表示“真”,0表示“假” C++: 内部常量true表示“真”,false表示“假” 3.2.2 构造类型--数组 3.2.2 构造类型--数组(续) 3.2.3 构造类型:指针 想一想: 例: 例:命令行参数 3.2.3.3 指针与数组的等价性 例1: 例2: 3.2.4 引用(Reference) 指针是通过地址间接访问某个变量,而引用是通过别名直接访问某个变量,对引用的操作就是对被引用的变量的操作。 3.2.4.1 注意 3.2.5 创建类型别名:typedef 3.3 运算符 3.3.1 C中的运算符 (略) 3.3.2 作用域分辨符: :: 3.3.3 New和delete 3.3.3 New和delete(续) 3.3.4 New/delete VS malloc/free 3.3.4 New/delete VS malloc/free(续) 如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。 因此,new/delete必须配对使用,malloc/free也一样。 3.4 表达式 所有表达式都有值! 3.4.1 优先级和结合性 3.4.2 副作用(结果依赖编译器) 3.5 语句 3.5.1 C++的语句 3.5.1 C++的语句(续) 3.5.2 例 (略) 3.6 C++程序结构和编译环境 3.6.1 C++程序实例 3.6.2 C++程序的基本组成 预处理 输入和输出 函数和类 语句 变量 其他 3.6.3 典型C++环境 作业: 为数组分配空间/撤销空间 int size ; cinsize; int * parrayInt = new int[size]; //动态申请 char * string = new char[20]; ……; //使用parrayInt //释放空间, [ ]表示撤销整个数组, delete [ ] parrayInt; delete [ ] string; 编译时,New可以根据对象的类型,自动决定对象的 大小;而malloc需要显式指定需要分配空间的大小。 New返回指向正确类型的指针,不必进行强制类型转 换;而malloc返回void *,必须进行强制类型转换, 可能带来错误。 struct test{ int a; char b; test(int ia=0,char ib=‘ ’); }; test::test(int ia=0,int ib=‘ ‘); { a=ia; b=ib;} C: Main() { test * objt = (test *) malloc(sizeof(struct test)); objt-test(86,’A’); …; free(objt); } C++: Main() { test * objt = new test(86,’A’); …; delete objt; } 用new生成对象时,会调用构造函数, 用malloc则不 会;同样,用delete删除对象时,会调用析构函数, 用 free则不会. Time * pint = new Time; // 正确地构造 delete pint; //
文档评论(0)