C++常见面试题(2019年校招总结)

一、C++与C语言的联系

c语言是面向过程的结构化语言,c++是面向对象的的程序设计语言,在c语言的基础上进行了扩充和完善,并且c++兼容了c语言的面向过程的特点。在C++中可以使用继承、多态进行面向对象的编程。

面向对象与面向过程的区别

面向过程

面向过程编程是就分析出解决问题题的不走,然后把这些步骤一步一步的实现,使用的时候一个一个的一次调用就可以了。

面向对象

面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个市委在整个解决问题的步骤中的行为。

举个例子(玩五子棋)

使用面向过程的思想来考虑就是:开始游戏,白棋先走、绘制画面、轮到黑子、绘制画面、判断输赢、重复之前的过程,输出最终结果。

使用面向对象的思想来考虑就是:玩家系统、棋盘系统、判定系统、输出系统。

面向对象就是高度的将实物抽象化,也就是功能的划分,面向过程就是自顶向下编程,也就是步骤的划分

具体语言的区别

1、关键字不同

C99有32个关键字

C++98有63个关键字

一些关键字细微的区别

1、struct:在C语言猴子那个struct定义的变量中不能由函数,在C++中可以有函数

2、malloc:malloc的返回值是void*,在C语言中可以赋值给任意类型的指针,在C++中必须要进行强制类型转换,否则会报错。

3、class和struct:class是对struct的扩展,struct的默认访问权限是public,而class的默认访问全显示private

2、后缀名不同

C源文件的后缀是.c,C++源文件的后缀是.cpp,在VS中,如果在创建源文件的时候什么都不给,默认的就是.cpp

3、返回值不同

在C语言中,如果一个函数没有指定返回值得类型,默认的返回值为int类型,并且会返回一个随机数,一般为0xCCCCCCCC,C++中如果一个函数没有返回值,则必须要指定为void,否则编译不会通过。

4、参数列表不同

在C语言中,函数没有指定参数列表的时候,默认可以接受多个参数,但是不支持无名参数,在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接受任何参数,但是他支持无名参数。

5、缺省参数

缺省参数的声明或定制函数时的参数指定一个默认值。在调用该函数时,如果没有指定实参则可以采用该默认值,则使用指定的参数。但是这在C语言中是不支持的。

6、函数重载

函数重载是函数的一种特殊情况,指的是在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表必须不同,或者是在类中使用const修饰的函数和没有使用const修饰的函数,常用来处理实现功能类似但是数据类型不同的问题。在C语言中没有函数重载,是因为C语言对函数名的修饰只是在函数名前添加一个下划线,但是C++对函数名的修饰会添加上该函数的返回值和参数列表。

7、标准输入输出

在C语言中使用的是scanf()和printf()来实现的,但是C++中是使用类来实现的。cin、cout对象,他们本身并不是C++语言的组成部分,在C++中不提供内在的输入输出运算符,这时与其他语言不相同的地方,他的输入和输出是通过C++中的类来实现的,cin和cout都是这些类的实例,是在C++语言的外部实现的。

8、动态内存管理

C语言使用的是malloc/free函数,C++在此基础上还添加了new/delete两个关键字。

9、const修饰

C语言中const修饰的变量不可以用在定义数组时的大小,并且在定义的时候可以不设定初始值,但是在C++中修饰的变量在定义的时候必须要设定初始值,并且可以用在定义数组的大小,,如果不进行取地址或解引用的话,是存放在符号表中的,不开辟内存。

二、C++面向对象

面向对象的特点

维护性、复用性、扩展性。

封装体现了维护性,按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。通过限制对属性和操作的访问权限,可以将属性隐藏在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作,这样增加了对象的独立性,外部的对象不能直接操作对象的属性,只能使用对象提供的服务,从而保证了数据的可靠性。

继承体现了复用性,当定义了一个类后,又需要定义一个新类但是这个类与原来的类相比只是增加或修改了部分属性和操作,这时可以引用原来的类派生出新的类,新类中只需要描述自己特有的属性和操作,这样就大大的简化了对问题的描述,提高了程序的复用性。

多态体现了扩展性,多态就是一个接口多种实现,当需要添加新的模块功能的时候,不需要改变原来的功能,只需要添加新的即可,这样就实现了扩展性。

面向对象的优点

易于维护:可读性比较高,如果有改变的需求,由于继承的存在,维护也只是局部模块,所以说维护起来是非常方便和较低成本的。

质量高:可重用现有的,在以前的项目的领域中一杯测试过的类使系统满足业务需求并具有较高的质量。

效率高:在软件开发时,根据设计的需要对现实事件的事务进行抽象,产生类。这样结局问题的方法接近于日常生活和自然的思考方式,必定会提高软件开发的效率和质量。

1、c语言是面向过程的结构化 语言,易于调试和维护。

2、表现能力和处理能力极强,可以直接访问内存的物理地址。

3、C语言实现了对硬件的编程操作,也适合于引用软件的开发。

概述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值