c++思维,内联函数功能

thinking in C++, inline function feature?

本文关键字:函数 功能 思维 c++      更新时间:2023-10-16

以下代码来自《Thinking in c++》。作者提到:"由于操作符[]是内联的,您可以使用这种方法来保证不会发生违反数组边界的情况,然后删除发送代码的require()。"这里提到的内联函数的什么特性?谢谢!

#include "../require.h"
#include <iostream>
using namespace std;
template<class T>
class Array {
  enum { size = 100 };
  T A[size];
public:
  T& operator[](int index) {
    require(index >= 0 && index < size,
      "Index out of range");
    return A[index];
  }
};

作者提到要在调用站点展开inline函数的特性,就好像您在调用的地方编写了它们的主体。这保证不会损失效率——即使是在现代硬件上调用函数时的微小损失。此外,当索引操作符内联展开时,编译器可能会更好地优化代码,因为优化器可以知道函数内部代码的性质。

至于从运输代码中删除require,您需要在当前实现中手动执行。您还可以使用条件编译来删除产品代码中的边界检查。