面试题答案
一键面试区别
- 搜索路径
#include <filename>
:编译器会在系统默认的包含文件目录(通常是与编译器相关的标准库路径)中查找头文件。例如,在Linux系统下,GCC编译器可能会在/usr/include
等系统目录中查找。这种方式主要用于包含标准库头文件,如<iostream>
<vector>
等。#include "filename.h"
:编译器首先会在当前源文件所在的目录中查找头文件,如果找不到,再到系统默认的包含文件目录中查找。这意味着它优先查找用户自定义的头文件所在的本地路径。
- 用途
#include <filename>
:用于包含系统提供的标准库头文件,这些头文件是编译器和操作系统环境的一部分,在整个项目中具有通用性和全局性。#include "filename.h"
:用于包含用户自己编写的头文件,这些头文件是针对特定项目或模块的,与项目的特定逻辑紧密相关。
实际场景举例
- 使用
#include <filename>
的场景- 当使用C++标准库的输入输出功能时,会包含
<iostream>
头文件。例如:
- 当使用C++标准库的输入输出功能时,会包含
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
- 当使用标准库的容器和算法时,如
<vector>
和<algorithm>
。
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {3, 1, 4, 1, 5};
std::sort(numbers.begin(), numbers.end());
for (int num : numbers) {
std::cout << num << " ";
}
return 0;
}
- 使用
#include "filename.h"
的场景- 假设在一个项目中有一个自定义的
MathUtils.h
头文件,用于定义一些数学相关的函数,比如计算平方的函数square
。 MathUtils.h
文件内容:
- 假设在一个项目中有一个自定义的
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int square(int num);
#endif
MathUtils.cpp
文件用于实现函数:
#include "MathUtils.h"
int square(int num) {
return num * num;
}
- 在主程序
main.cpp
中使用:
#include "MathUtils.h"
#include <iostream>
int main() {
int result = square(5);
std::cout << "The square of 5 is: " << result << std::endl;
return 0;
}
这里MathUtils.h
是用户自定义的头文件,所以使用#include "MathUtils.h"
来包含。