C++面试题

本文总结了C++面试中常见的知识点,包括面向对象的理解、引用和指针的区别、全局变量与局部变量的区别、函数值的传递方式、#define与const的区别、多态的概念、内存分配方式及new/malloc的区别等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天在准备实习的时候,开始准备面试,刷起了数据结构。同时也准备了一些常见的面试题(C++)

但是这些题目大部分是从网上归纳总结的,同时也是自己认为比较精辟的。


一、面向对象的理解:

面向对象是一种软件设计方法,在开发的过程中,把事物抽象成对象,把事物的关系抽象成类、继承等。这种设计方法相对面向过程的方法更容易令人理解。同时在设计大型的复杂的系统,更容易进行拓展和维护。

 

二、引用和指针的异同:

同:都是地址的概念(把引用、指针作为参数可以在全局里改变参数的值)

异:指针是一个实体,引用仅仅是别名;

引用只可以初始化一次,之后不可变;指针可以重复赋值。

引用不能为空,而指针可以为空值

 

三、全局变量和局部变量在内存中有什么区别        

全部变量存储在静态数据区,而局部变量存储在堆栈中

四、C++函数中值的传递方式:

值传递、指针传递、引用传递

 

五、#defineconst的区别

#defineC语法中用来定义符号常量的方法,在编译阶段符号就会被值替换,可以用来定义常量,也可以用来定义短小函数。被define的符号并没有类型。

Const的是C++中定义常变量的方法,它可以使变量不变,但它还是一个变量,从而具有变量的特性,它具有类型。内存中存在以它命名的存储单元,可以用sizeof测出长度。

 

五、全局变量的优缺点:

便于数据共享,不变管理,容易引发意想不到的错误。

 

六、多态的理解

顾名思义:多种状态,相当于接口的不同实现方式。C++中通过虚函数的函数重载来实现。父类指针可以指向子类对象,一个函数在不同的子类有不同的实现方式。在编程实现某些功能的时候,把不同的子类对象当成父类来看,暂时屏蔽不同子类对象之间的差异,写出通用的代码,来适应需求的不断变化。一个父类指针根据当前赋值给他的不同的子类对象,来完成一些差异化的功能。

 

七、内存的分配方式

1、  静态存储区:这块内存在程序编译的时候已经分配好,在整个程序整个运行期间都存在。如:全局变量、static变量

2、  在栈上创建:在执行函数的时候,函数内部的的存储单元都可以在栈上创建,当函数执行结束的时候这些存储单元被释放。

3、  从堆上分配:动态内存分配。动态内存的生存周期由程序员决定(使用new或者malloc()生成,使用delete或者free()释放)如果在堆上分配了空间,就有责任回收他。频繁的申请和释放不同大小的内存块将会产生堆内碎块。

 

八、newmalloc()的区别;deletefree()的区别

newdeletemalloc()free()的最主要区别是newdelete是运算符,而mallocfree是函数。对于非内部数据对象而言,malloc/free无法满足动态对象的要求。而newdelete会自动调用该对象的构造函数、析构函数。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值