考研复试:cpp面试题整理

本文详细梳理了C++面试中的常见问题,包括C++与C、Java的区别,结构体与类的不同,STL概念,指针与引用的区别,面向对象的三大特性,内存划分,关键字与标识符,运算符重载与函数重载,构造函数与析构函数的作用,静态变量与const关键字的理解,预处理程序,以及面向过程与面向对象的区别。同时,讨论了动态内存分配、引用的使用、面向过程与面向对象的优缺点,以及运算符重载中的前后缀问题。文章还探讨了new与malloc的区别,涉及C语言中与字符串相关的函数,并解释了指针、地址和引用的差异。最后,通过停车场收费系统的设计,展示了如何在实际问题中思考类的设计。
摘要由CSDN通过智能技术生成

C和C++和java的区别?

①c是面向过程的语言,cpp和java是面向对象的语言。这是他们最本质的区别。

②C和cpp是直接编译运行,java是在虚拟机中运行的。

③指针的方面,c和c++可以直接用指针来访问内存,java没有指针。

C++里的结构体和类的区别:

结构体默认访问权限全是public

类访问权限是public 、private、protected,默认访问权限是private

Stl含义:

标准模板库Standard Template Library是容器和算法的集合

eg:Vector(向量)、stack(栈)、set(集合)、queue(队列)、map(哈希表)

指针和引用的区别?

①指针是存储变量地址的变量。

②引用在函数传参的时候用到。引用本身也是地址,在传递的时候不是值,传的是地址。

面向对象的三大特性

封装:是把成员变量和成员函数封装进一个类并赋予它一些权限。

继承:首先要有一个基类,然后派生类继承基类,派生类能继承基类的成员变量和成员函数。

多态:多态就是同一个接口,使用不同的实例而执行不同操作。简单的说,一个接口,多种实现方式。Eg:函数重载。

编译一个程序内存分为哪两部分?

堆内存和栈内存。

关键字和标识符的区别?

标识符是变量名。比如a、b、c…

关键字是new、delete、int、break…

运算符重载和函数重载的区别?

运算符本身也是函数,运算符包涵单目和双目运算符。
如果运算符重载的话需要参数数量的问题。

重载和重写?

++重写(override覆盖)++:如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。

++重载++:如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载

方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。

重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。

全局变量(global variable)和局部变量(local variable)的区别?

  1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
  2. 内存存储方式不同:全局变量存储在堆区中,局部变量存储在栈区
  3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
  4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

构造函数和析构函数是干什么的?

构造:对象实例化的时候自动运行的函数,进行对象初始化。

析构:撤销对象的时候会自动运行的函数,可以是释放

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值