- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TheCLanguageColumbiaUniversityC语言哥伦比亚大学
The C++ Language Prof. Stephen A. Edwards The C++ Language Bjarne Stroupstrup, the language’s creator C++ Features Classes User-defined types Operator overloading Attach different meaning to expressions such as a + b References Pass-by-reference function arguments Virtual Functions Dispatched depending on type at run time Templates Macro-like polymorphism for containers (e.g., arrays) Exceptions Example: A stack in C typedef struct { char s[SIZE]; int sp; } Stack; stack *create() { Stack *s; s = (Stack *)malloc(sizeof(Stack)); s-sp = 0; return s; } Example: A stack in C char pop(Stack *s) { if (sp = 0) error(“Underflow”); return s-s[--sp]; } void push(Stack *s, char v) { if (sp == SIZE) error(“Overflow”); s-s[sp++] = v; } C++ Solution: Class class Stack { char s[SIZE]; int sp; public: Stack() { sp = 0; } void push(char v) { if (sp == SIZE) error(“overflow”); s[sp++] = v; } char pop() { if (sp == 0) error(“underflow”); return s[--sp]; } }; C++ Stack Class Natural to use Stack st; st.push(‘a’); st.push(‘b’); char d = st.pop(); Stack *stk = new Stack; stk-push(‘a’); stk-push(‘b’); char d = stk-pop(); C++ Stack Class Members (functions, data) can be public, protected, or private class Stack { char s[SIZE]; public: char pop(); }; Stack st; st.s[0] = ‘a’; // Error: sp is private st.pop(); // OK Class Implementation C++ compiler translates to C-style implementation Operator Overloading For manipulating user-defined “numeric” types Complex c1(1,5.3), c2(5); Complex c3 = c1 + c2; c3 = c3 + 2.3; Example: Complex number type C++’s operator overloading makes it elegant Class Complex { double re, im; public: complex(double); complex(double, double); complex operator+=(const complex); }; References Designed to avoid copying in overloaded operators A mechanism for calling functions pass-by-reference C only has pass-by-value void swap(int x, int y) { /* Doesn’t work */ int tmp = x;
您可能关注的文档
- The 5 Themes of Geography地理5大主题.ppt
- The 7 Habits of Highly Effective People fac高效人士的7个习惯因素.ksu.sa.ppt
- The 7 Habits of Highly Effective People Joel's space7个习惯的人乔尔的高度有效的空间.ppt
- The 7 Habit Signature 37个习惯签名 PPT Fort Lewis College.ppt
- The 7Habits of Highly Effective People Vancouver 高效能人士的7habits 温哥华.ppt
- The 90’s inetTeacher90的inetteacher.ppt
- The 7 Habits of Good Readers OoCities7良好的生活习惯的读者oocities.ppt
- The ABC Dummy Guide to Venture Capital HKCPECABC虚拟引导风险资本hkcpec.ppt
- The 5 E’s Science Lesson Welcome to UMassK125 E的科学课欢迎umassk12.ppt
- The 87 National Poverty Reduction Program in China the87国家扶贫计划在中国.ppt
- 青岛版(2024)小学数学一年级上册《我的幼儿园》教学设计及反思(共2课时).docx
- 西师大版(2024)小学数学一年级上册《活动一:介绍我的幼儿园》教学设计及反思.docx
- 北师大版(2024)小学数学一年级上册《我上学啦》教学设计及反思.docx
- 冀教版(2024)小学数学一年级上册《排座位》教学设计及反思.docx
- 北京版(2024)小学数学一年级上册《活动一:参观校园》教学设计及反思.docx
- 北京版(2024)小学数学一年级上册《活动三 整理书包》教学设计及反思.docx
- 冀教版(2024)小学数学一年级上册《熊猫请客》教学设计及反思.docx
- 湘科版(2024)小学科学一年级上册《找相同和不同》教学设计及反思.docx
- 冀人版(2024)小学科学一年级上册《学科学》教学设计及反思.docx
- 人教版(2024)初中生物七年级上册《动物细胞》教学设计及反思.docx
文档评论(0)