能独立完成带输入、处理、输出的完整控制台程序即具备小项目能力,需自主组织配置读取、数据处理、结果输出及错误判断;应掌握文件拆分、头文件防护、跨文件链接;能读懂关键编译错误并定位问题。

写得出来 main() 里不只三行代码的小程序
这不是指“能跑通 hello world”,而是指你能自己组织起:读配置(比如从文件或命令行)、处理数据(比如解析字符串、计算统计、排序容器)、输出结果(到控制台或文件),中间穿插错误判断和基本流程控制。
常见卡点是:变量作用域混乱导致值没传进去、std::vector 和 std::string 的边界访问越界、忘记检查 std::ifstream::is_open() 就直接读取。建议用一个“学生成绩录入与查询”练手——它天然包含结构体定义、容器存多条记录、按姓名查、按分数排序等典型操作。
知道怎么把一个功能拆成几个 .cpp + .h
小项目一旦超过 200 行,硬塞进一个文件就难维护。你需要能主动拆:
• 把数据结构(如 class Student)和相关操作(load_from_file()、print_report())放到单独的 student.h/student.cpp
• main.cpp 只保留流程调度,不掺杂具体实现
• 头文件里用 #pragma once 或卫士宏防止重复包含
• 编译时能正确处理跨文件符号引用(比如 g++ main.cpp student.cpp -o app 不报 undefined reference)
如果每次加新文件都要查“怎么让 C++ 找到我的函数”,说明链接模型还没建立起来。
遇到编译错误能看懂关键信息,不是直接搜整段报错
C++ 编译器报错常很长,但真正有用的就一两行:
• error: 'xxx' was not declared in this scope → 检查拼写、头文件是否 #include、命名空间是否用了 std::
• error: no matching function for call to 'yyy' → 实参类型和函数声明不匹配,比如传了 int 却要 const std::string&
• segmentation fault (core dumped) → 八成是野指针或越界访问,优先检查 new/delete 是否配对、vector[i] 的 i 是否 <br>别指望靠复制整段错误去搜索引擎碰运气;学会盯住第一处 error,它往往就是根因。
能用 CMake 管理两个以上源文件的构建
手动敲 g++ 命令不是不行,但项目稍大就不可持续。你至少得会:
• 在项目根目录写一个最简 CMakeLists.txt:
cmake_minimum_required(VERSION 3.10) project(StudentApp) add_executable(app src/main.cpp src/student.cpp) target_include_directories(app PRIVATE src)
• 创建
build/ 目录,执行 cmake .. && make 成功生成可执行文件• 修改任一
.cpp 后,只运行 make 就能增量编译,而不是全部重来不会写 CMake 不影响写逻辑,但它决定了你写的代码能不能被别人(或三个月后的你自己)干净地复现和扩展。 真正容易被忽略的是“调试直觉”——比如某个函数返回值不对,你是先加
std::cout 打点,还是直接设断点看变量变化?后者才是工程化小项目的分水岭。没有调试习惯,再小的项目也会在第三天陷入“不知道哪行出的问题”的循环。


















