📅  最后修改于: 2023-12-03 14:39:55.329000             🧑  作者: Mango
在C++面试之前,需要做好充分的准备工作,知道常见的问题,学习解决方案,熟悉C++语言特性和常用的STL库等。下面是一些常见的C++面试问题。
C++是一种强类型、面向对象、编译型语言。它是C语言的扩展,可以使用C的所有函数和特性,并添加了面向对象编程、泛型编程、异常处理和其他特性。C++也具有高效的性能,并且广泛应用于操作系统、嵌入式系统、游戏开发、Web开发等领域。
C++中的数据类型包括基本数据类型和派生数据类型两种。基本数据类型包括整型、浮点型、字符型、布尔型等,派生数据类型包括指针、数组、结构体、类等。常见的数据类型包括:
在C++中,使用const
关键字定义常量。例如:
const int MAX_VALUE = 100;
const double PI = 3.1415926;
使用#include
指令引入头文件,例如:
#include <iostream>
#include "myheader.h"
标准库头文件使用尖括号<>
,用户自定义头文件使用双引号""
。
C++中使用函数名(参数列表)
的形式定义和调用函数。例如:
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int a = 1, b = 2;
int c = add(a, b);
std::cout << c << std::endl;
return 0;
}
指针是一个用来存储内存地址的变量,在C++中使用*
符号表示。例如:
int a = 10;
int *p = &a; // 定义指向a的指针
使用指针可以操作内存中的数据,例如:
*p = 20; // 将a的值修改为20
引用是C++中的一种数据类型,它是变量的别名。引用也可以看作是某个变量的别名,它和原变量被看作同一实体。例如:
int a = 10;
int &b = a; // 定义一个a的引用
b = 20; // a的值变为20
C++中使用new
和delete
关键字进行内存的动态分配和释放。例如:
int *arr = new int[10]; // 动态分配10个int类型的空间
delete[] arr; // 释放arr指向的内存空间
STL(Standard Template Library)是C++的标准库,包含了许多常用的容器、算法和迭代器等。常见的STL容器包括向量(vector)、队列(queue)、映射(map)、集合(set)等。
C++中的异常机制可以处理程序中的错误,避免程序崩溃。当程序运行出错时,会抛出一个异常,程序会查找合适的异常处理程序来处理这个异常。例如:
try {
// 可能抛出异常的代码
} catch (exception &e) {
// 处理异常的代码
}
多态是C++的一种面向对象编程特性,它可以实现不同对象的相同接口,从而实现代码的复用和扩展。常见的多态包括重载函数、虚函数和纯虚函数等。
C++11中引入了线程库(thread),可以使用该库实现多线程程序。例如:
#include <iostream>
#include <thread>
void myFunction1() {
std::cout << "Hello from myFunction1" << std::endl;
}
void myFunction2() {
std::cout << "Hello from myFunction2" << std::endl;
}
int main() {
std::thread t1(myFunction1);
std::thread t2(myFunction2);
t1.join();
t2.join();
return 0;
}
可以使用迭代器(iterator)遍历STL容器。迭代器是C++的一种对象,用于遍历容器中的元素。例如:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5};
for(auto iter = vec.begin(); iter != vec.end(); ++iter) {
std::cout << *iter << " ";
}
std::cout << std::endl;
return 0;
}
模板是C++的一种编程技术,它可以实现代码的泛化,从而使得代码可以适应多种数据类型。常见的模板包括函数模板和类模板。
可以使用文件流(fstream)实现C++的文件操作。例如:
#include <iostream>
#include <fstream>
int main() {
std::ofstream outfile("example.txt");
if(outfile.is_open()) {
outfile << "Hello, World!" << std::endl;
outfile.close();
std::cout << "File written successfully." << std::endl;
} else {
std::cerr << "Error writing file." << std::endl;
}
return 0;
}