C与C区别与实践.docVIP

  1. 1、本文档共45页,可阅读全部内容。
  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文档。上传文档
查看更多
C++概述 C++ Primer 程序员面试宝典 C C++ 1.发展史 1980 Bjarne Stroustrup 在C语言基础上加上面向对象的程序设计物色,成就了后面的C++语言。 ANSI和ISO 1998正式推出C++国际标准。 2.C和C++的基本区别 C++是C的超集,C是C++的子集:C++编译器(g++)能够编译任何C程序。 2.1 源程序扩展名: .cpp .cc C程序是.c 2.2 库头文件不再明文的加.h后缀,并且兼容C的头文件,方法是将: #include stdio.h ? #include cstdio //头文件名前加c,省略.h 2.3 标准IO由stdio.h变成了iostream类 标准格式化函数升级为cin,cout相关类 2.4 new/delete取代了malloc()/free(), 增加了构造/析构函数调用处理机制 3. C++增加的内容 3.1 BOOL类型和宽字节字符类型的支持(wchar_t) 3.2名字空间 是一种描述逻辑分组的机制,是一个作用域。程序里每个实体(函数,类)都属于某个可识别的辑逻单位(模块),即是说它们都应该位于某个名字空间。它为更好的组织某一集团的组成成员提供了更大的灵活性,例一个类的实现,成员函数没有必要都在一个花括号作用域里去实现,可分散开来,前提是加上名字空间限定,例: void classA::func(){}。//classA是具体类的名字空间,::是限定运算符,表示从属关系,即func()属于classA 3.3 类型转换和强转 3.3.1 static_cast 数值类型之间,有一方是void*的指针类型之间(静态转换,程序未运行时开发者即已确定所要的类型,编译时确定类型) dynamic_cast 多态情况较常用 (动态转换,即在程序运行时才确定具体形态) const_cast 去掉const、volatile关键字的限定作用 reinterpret_cast 允许强制转换任何类型的指针;把整数强转为指针,指针强制为整数。 3.3.2 具体目标类型标识符(待转对象) ?强制类型转换, 让编译器不会产生警告信息。尽量少用强转。 3.4 内联函数 它保持了函数的所有特点,但在需要时可像宏一样展开,不需要调用函数的开销(它是在编译时展开的)。 行为像宏一样,加速的函数(不需调用),效果仍是函数。 内联函数会帮用户进行类型转换或检查,表达式优先序处理,比宏更安全。 加了inline表示申请为内联函数,但编译器不一定会通过,要看函数体是否过于复杂(递归函数一般没法成为内联函数)。另外类的成员函数声明和函数实现在一起时也会自动申请为内联函数,但能不能成功升级也要看编译器。 3.5 成员指针 它主要用来访问某个数据或逻辑实体的内部成员。 成员指针也就是一个成员地址,两者都是采相对地址(类似偏移量的概念),成员函数地址特殊看待处理。 具体参考06memberpointer.cpp。 3.6 函数重载和默认值 在C++中,允许有相同的函数名,不过它们的形参列表中数据类型不同,这样这些函数就可以相互区别开来。这在C语言中是不允许。 在C++中函数重载是通过额外底层处理实现的,例如: void showMe(); void showMe(int ival,int ival2); 在底层会转为: __Z12showMe __Z12showMeii 由上可见,在C++编译器看来,这两表面看起同名的函数,最终还是两个不同的函数。 C++函数取消了隐式函数声明,另增加函数形参默认值机制 extern “C”{…} 用来告诉编译器,用C语言方式进行相关代码的编译处理。达到新旧代码兼容的目的。 ---------------- *引用及在函数中的应用(const) 面向对象思想 类的实现(struct/class),构造函数 3.7 引用型变量 引用型变量是其他变量的一个别名,我们可以认为它们只是名字不相同,其它都是相同的。它没有独立的内存空间,它必需与变量共享。它不能超越变量的权限属性。是一个从属地位。 3.7.1引用的初始化。一般要求声明一个引用变量,需要给它一个初始值,在引用变量的生存周期内,该值不会改变。 引用的定义格式: [const] 数据类型 引用标识符=宿主变量; 引用在函数传参中是以变量自身作为传参对象。 引用作为返回类型时注意不要返回一个局变变量,而应该返回一个局部静态变量的引用或动态分配空间的指针引用。 例:int* pi=NULL; int* rpi=pi; //rpi就是一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档