CPP常见问题

为什么inline 不适用于长函数?

  • 代码膨胀,可维护性差:编译产物会增大,同时修改代码需要重新编译所有调用点,调试。
  • 缓存失效:函数体过长会降低CPU指令缓存(l-cache)效率,性能可能变慢。
  • 编译器优化能力:现代编译器自动根据函数的大小、调用频率来判断是否inline,因此手动添加的inline不一定生效。

在 C++ 中,endl"\n" 都能实现换行,但有一些重要区别

  1. "\n"
    • 只是换行符(newline character),会插入一个 '\n' 到输出缓冲区。
    • 不会立即刷新输出缓冲区。
    • 通常打印大量数据时,用 "\n" 效率更高,因为不会强制刷新。
  2. endl
    • 在插入换行符 '\n' 的同时,会刷新(flush)输出缓冲区。
    • 刷新意味着将缓冲区数据立即输出到目的地(如终端、文件)。
    • 会带来额外开销,因此频繁用 endl 会影响性能。

函数的圈复杂度:覆盖所有的可能情况最少使用的测试用例个数