经典C++语言笔试题目 #3

本文深入探讨了C++中的关键概念,包括Heap与Stack的区别、重载与重写的差异、多态的作用、空类的大小、模板的理解、const的正确使用,以及如何获取当前源文件名和行号。

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

Q1: Heap与stack的差别
A:
Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行

Q2: 重载(overload)、重写(override,有的书也叫做“覆盖”)、重定义(redefinition)的区别?
A:
在这里插入图片描述

Q3: 多态的作用?
A:
主要是两个:

  1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;
  2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

Q4: 当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少?
A:
空类在实例化时编译器会隐式增加一个字节以分配内存

05: 谈谈你是怎么认识c++中的模板的?
A:
模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现,方便了大规模的软件开发。(结合stl更好)

Q6:请你谈谈你在类中如何使用const的。
A:
有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。 不能在类声明中初始化 const 数据成员。
const 数据成员的初始化只能在类构造函数的初始化表中进行。

Q7: 如何打印出当前源文件的文件名以及源文件的当前行号?
A:
cout << FILE ;
cout<<LINE ;
__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。(c也有)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值