c++ 高频率面试题
时间: 2024-12-26 20:21:48 浏览: 16
C++面试题涉及多个方面,这里列举了一些高频题目:
1. **不可继承的类设计**[^1]:
```cpp
template <typename T>
class A {
friend T;
// ...其他成员
};
class B : virtual public A<B> {}; // 试图继承,但会被阻止
```
这个面试题测试了对模板和友元函数的理解以及类设计的控制。
2. **数组名与指针的区别**:
```cpp
char str[13] = "Hello world!";
char *pStr = "Hello world!";
// 打印结果:
// sizeof(str): 存储数组的实际大小(包括空字符)
// sizeof(pStr): 指针本身的大小
// strlen(str): 字符串"Hello world!"的长度
// strlen(pStr): 函数计算的是字符串常量的长度,不是实际内存地址
```
3. **`a`与`&a`的区别**:
```cpp
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int*)(&a + 1);
// 打印结果:
// *(a+1): 直接访问数组元素,相当于 a[1](指向第二个元素)
// *(ptr-1): 跳过指针自身,访问到a[0](数组第一个元素)
```
4. **编写MIN宏**:
```cpp
#define min(a, b) ((a) <= (b) ? (a) : (b))
```
这个问题是关于宏定义的基本操作,用于实现简单的比较并返回较小的值。
5. **面向对象中的虚函数理解**:
- 测试点在于多态性和虚函数的概念,可能涉及提问如何确保基类指针调用派生类的函数。
对于更深入的C++面试准备,建议复习以下内容:
阅读全文