gpt4 book ai didi

c++ - 用 C++ 思考,内联函数功能?

转载 作者:行者123 更新时间:2023-11-28 07:40:57 28 4
gpt4 key购买 nike

以下代码来自Thinking in C++。作者提到“由于 operator[] 是内联的,您可以使用这种方法来保证不会发生数组边界违规,然后删除传送代码的 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 而言,您需要在当前实现中手动完成。您也可以使用 conditional compilation删除生产代码中的边界检查。

关于c++ - 用 C++ 思考,内联函数功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com