C++经典面试题 | C和C++的区别是什么?

版权声明:转用请注明出处 https://blog.csdn.net/weixin_39411321/article/details/89311528

导语:

大家求职简历上肯定会写精通C和C++语言之类的词语,所以,这个问题被问到的概率也是相当高的,请大家提前准备下该怎么表达!

解题思路:

面试中如果要和面试官谈C和C++的区别这样的问题,那么尽量先从轮廓上谈一些他们大方向上的差别,然后等着面试官再和你仔细的询问某个知识点的细节,切忌一上来就喋喋不休,没个逻辑,想到哪里说到哪里,这样不行,因为它们之间的区别点还是非常多的!

针对这个问题,你可以先思考一下,然后给出诸如下面的内容:

C是面向过程的语言,而C++是面向对象的语言,因此C++语言中有类和对象以及继承多态这样的OOP语言必备的内容,此外C++支持模板,运算符重载,异常处理机制,以及一个非常强大的C++标准模板库STL,另外一个Boost库现在也归属C++标准库,提供了很多强大的功能。

C只能写面向过程的代码,而C++既可以写面向过程的代码,也可以实现面向对象的代码;既然C++是面向对象的OOP语言,因此它还有非常强大的设计模式,比如单例,工厂,观察者模式等等,这些在C语言当中都是不支持的。

C和C++一个典型的区别就在动态内存管理上了,C语言通过malloc和free来进行堆内存的分配和释放,而C++是通过new和delete来管理堆内存的(至于new/malloc有什么区别,delete/free有什么区别,你等面试官来继续深入问你,先从大方向上罗列区别,让他感受一下你只是的全面性^^)

另外强制类型转换上也不一样,C的强制类型转换使用()小括号里面加类型进行类型强转的,而C++有四种自己的类型强转方式,分别是const_cast,static_cast,reinterpret_cast和dynamic_cast(一样,等面试官来深入问你,前提是这块你准备好了,如果没有理解他们的使用场景和区别,那么这一点你还是不要说了!)

C和C++的输入输出方式也不一样,printf/scanf,和C++的cout/cin的对别,前面一组是C的库函数,后面是ostream和istream类型的对象。

C++还支持带有默认值的函数,函数的重载,inline内联函数,这些C语言都不支持,当然还有const这个关键字,C和C++也是有区别的,但是这都是目前最常用的C89标准的C内容,在C99标准里面,C语言借鉴了C++的const和inline关键字,这两方面就和C++一样了。

由于C++多了一个类,因此和C语言的作用域比起来,就多了一个类作用域,此外,C++还支持namespace名字空间,可以让用户自己定义新的名字空间作用域出来,避免全局的名字冲突问题。

C++不仅支持指针,还支持更安全的引用,不过在汇编代码上,指针和引用的操作是一样的

由于C++是面向对象的语言,支持类对象,类和类之间的代理,组合,继承,多态等等面向对象的设计,有很多的设计模式可以直接使用,因此在设计大型软件的时候,通常都会采用面向对象语言,而不会采用面向过程语言,可以更好的进行模块化设计,做到软件设计的准则:高内聚,低耦合!

在C++中,struct关键字不仅可以用来定义结构体,它也可以用来定义类(至于C++中struct和class的区别,请大家自行翻阅资料)

当然C和C++还有更多的区别,希望大家可以自行再补充

c和c++的内存分布有什么区别?

C和C++程序运行时的内存分布式一样一样的,但是他们管理堆内存的方式是有区别的,那请大家自己先想想new/malloc有什么区别?delete/free有什么区别这两个问题,另外,new分配内存失败是抛出异常的,而不是通过返回值和NULL比较进行判断的,请注意!

可以参照我的另外两篇博客
malloc和new的区别? https://blog.csdn.net/weixin_39411321/article/details/89311059
new/new[]和delete/delete[]的区别原理 https://blog.csdn.net/weixin_39411321/article/details/89310651

猜你喜欢

转载自blog.csdn.net/weixin_39411321/article/details/89311528