行业知识
C++面试题和笔试题(一)
今天面试了一家100人以上���小公司,做QT上位机开发,个人感觉凉凉。以下是笔试题和我能回忆起的面试题
()目录
一、笔试题
()1. 什么是C++中的指针
官方解释:
自己的理解:
2.什么是引用,它与指针有什么不同
官方解释:
自己的理解:
3.什么是多态?
4.什么是异常处理?如何在C++中实现?
5.请解释C++的const关键字,它在哪些情况下使用
5. 类成员
6.请解释C++中的static关键字,它在哪些情况下使用
1. 静态局部变量
2. 静态全局变量
3. 静态类成员
4. 静态函数
7.请解释C++中的sizeof运算符,它返回什么?
一、笔试题
1. 什么是C++中的指针
官方解释:
C++中的指针是一个变量,其值为另一个变量的地址,即内存位置的地址。指针变量简称指针,它专用于存放变量在内存中的起始地址。指针是C/C++中的精髓所在,其特殊性在于它存放的是内存地址。
在C++中,每定义一个变量,系统就会给变量分配一块内存,且内存是有地址的。指针变量通过存储这些地址,使得我们可以间接地访问和操作这些内存中的数据。因此,指针是实现动态内存分配、函数调用、数据结构等高级功能的重要工具。
声明指针的语法:数据类型 *变量名。例如,int *p; 就声明了一个指向整数的指针p。
自己的理解:
你有一个好朋友住在你家附近。你知道他家的地址,所以你可以根据这个地址找到他家,然后和他一起玩。
在这个例子里,地址就像是C++中的指针,而你的朋友家则是那个地址所指向的变量或者数据。
2.什么是引用,它与指针有什么不同
官方解释:
引用是C++中的一个概念,它是变量的一个别名,与原来的变量实质上指向同一块内存地址。当我们给一个变量起一个引用时,我们可以使用这个引用来代替原来的变量名,对引用的操作就是对原变量的操作。例如,如果我们有int a = 5;,然后定义int& ref = a;,那么ref就是a的一个引用,它们实际上都是指向同一个内存地址的。
自己的理解:
引用:你有一个很喜欢的玩具熊,你给这个玩具熊起了一个特别的名字,叫做“熊熊”。这个名字就是玩具熊的一个引用,每次你叫“熊熊”的时候,其实就是在说那个玩具熊。
指针:指针就像是一个小纸条,上面写着你朋友的家的地址。有了这个小纸条,你就可以找到你朋友的家,和他一起玩。
| 引用 | 指针 | |
|---|---|---|
| 定义与性质 | 引用则是变量的别名,它和原变量实际上是同一个变量。 | 指针是一个变量,它存储的是另一个变量的地址 |
| 存储空间 | 引用则不占用额外的存储空间,它只是原变量的一个别名。 | 指针有自己的存储空间,它的大小通常是固定的 |
| 初始化 | 引用必须在定义时初始化,且一旦初始化后就不能再绑定到另一个变量上 | 指针可以不初始化 |
| 可变性 | 而引用的值(即它所代表的变量)在初始化后则不能改变。 | 指针的值(即它所指向的地址)可以在初始化后改变,使其指向另一个对象 |
| 空值 | 不能为空 | 空 |
| 多级引用与指针 | 引用只能是一级 | 可以有多级指针(例如int** p;) |
| 安全性 | 好(因为引用在初始化后不能改变所指向的对象,这减少了出错的可能性。) | 差 |
| 内存管理 | 内存泄漏 | 返回动态内存分配的对象或内存,必须使用指针 |
3.什么是多态?
简单来说,就是“一个接口,多种方法”。多态的实现方式主要依赖于继承和虚函数。
举几个代码例子
1).运行时多态(通过虚函数)
#include #include // 基类 Animal class Animal { public: virtual void speak() const { std::cout