The C+Language Columbia UniversityC++语言哥伦比亚大学.pptVIP

The C+Language Columbia UniversityC++语言哥伦比亚大学.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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;

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档