- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C和C回顾
C/C++ ReviewsC与C++的区别C中没有类,但是C中有struct和union,并且C++扩展了这二者的意义,在C++当中其与类相似,只是默认的访问控制是public的。C++中有引用类型,C中并没有。C并不支持函数的重载,所以在C中没有办法定义两个函数名与返回类型相同但是参数类型不同的函数。操作符重载是C++特有的。流操作符和C++特有的。继承、虚函数都是C++中的特性。C++与Java的区别Java编译成字节码运行在JVM上,C++需要编译成二进制代码后才能运行。Java在不同的平台(如Windows和Linux)上只需要编译一次,即可以运行在不同的平台,C++的代码需要针对不同的平台进行编译后才能运行。Java不支持操作符重载、强制类型转换,C++支持这些;C++支持多继承,并且有多种继承方式(public、protected、private),而Java只支持单继承,并且其继承方式与C++中的public继承类似。Java中对接口提供了直接的支持,C++中没有接口定义,可以用纯虚类实现。Java中所有类的声明与定义都是在一起的。C++中类的声明与定义可以分开。并且如果把成员函数的声明与定义放在一起,则默认其是inline函数。C++中成员和成员函数的默认访问控制符是private,默认的继承方式也是private;Java中的默认访问控制是package;C++中有动态内存分配,可以使用C的方式(malloc和free)的方式,以及new和delete的方式。Java使用内存回收机制,无需程序员关心内存分配的情况。C++通过提供指针的方式可以对内存直接进行操作,Java中没有指针,不可以直接访问物理内存。Java中的数组是原生类型,C++中的数组是伪数组。C++中只有被virtual修饰的方法才需要进行运行时动态绑定,而Java中除了static、final、private修饰的方法外,都执行动态绑定。C++中有拷贝构造函数,并且在下面三种情况下会自动调用:用一个对象初始化另一对象对象作实参进行函数调用对象作函数的返回值C++中类的初始化与Java中不同,在C++中有“基类与成员初始化列表”,首先按照继承顺序调用基类的构造函数,然后按照声明顺序调用成员的构造函数。而Java的作法是,静态变量初始化静态初始化块(Java)调用基类的构造函数构造基类对象实例变量的初始化构造函数的其余部分Java中函数的入栈方式是从左到右,逐个计算表达式的值并逐个入栈,即计算一个入一个。C++中会将所有的参数表达式都计算完成后再把参数入栈。【这一点C++标准并没有规定,不同的编译器可能会根据优化原则作不同的处理】C问题解析运算符的优先级优先级运算符结合律从高到低排列( )? [ ]? -? .从左至右!? ~? ++? --? (类型)sizeof+? -? *? 从右至左*? /? %从左至右+? -从左至右? 从左至右?? =?? ? =从左至右==? !=从左至右从左至右^从左至右|从左至右从左至右||从右至左?:从右至左=? +=? -=? *=? /=? %=? =? ^=|=? =? =从左至右典型的面试题目,写出下面程序的打印结果。int *ptr_i = newint[2];ptr_i[0] = 1;ptr_i[1] = 2;printf(%d, %d, *ptr_i, *ptr_i++);正确结果是2, 1隐式类型转换隐式类型转换是指由编译器程序按照某种预定的规则进行自动转换。对于不同的操作,隐式转换规则会有所不同。下面针对不同种类的操作符分别介绍它们的隐式转换规则。算术操作的类型转换如果其中一个操作数类型为long double,则另一个操作数也转换成long double。如果其中一个操作数类型为double,则另一个操作数也转换成double。如果其中一个操作数为float,则另一个数转换成float类型。先对操作数进行整型提升转换,如果操作数的类型不一样,则按5)以后的规则再进行转换。整形提升转换规则是:对于char,signed char,unsigned char,short int,unsigned short int类型,如果int型能够表示它们的值,则这些类型转成int,否则这些类型转换成unsigned int。Bool类型转换成int型,false为0;true为1.wchar_t和枚举类型转换成下列类型中第一个能表示其所有值的类型:int,unsigned int,long int,unsigned long int。如果其中一个操作数类型为unsigned long int,则另一个操作数转换成unsigned long int类型。如果一个操作数为long int,另一个操作数类型为u
文档评论(0)