gpt4 book ai didi

c++ - 使没有成员的仿函数成为类成员对象或堆栈对象是否更有效?

转载 作者:可可西里 更新时间:2023-11-01 17:41:22 26 4
gpt4 key购买 nike

我有一个没有成员变量的仿函数。我想知道根据需要动态创建此仿函数或将其缓存为成员变量是否更有效。我不确定关于空基类优化和缓存位置的问题。

struct Foo
{
int operator()(const MyData& data) const { ... }
};

最佳答案

对于空对象,直接在栈中创建即可。将仿函数作为成员添加到您的类型中将使您的所有对象都变大。将它添加为基础(以利用空基础优化),将产生一个奇怪的设计,其中您的类型无缘无故地实现了 operator()(const MyData&)。即使您将其设为私有(private),运营商也会在那里。

由于该类型没有成员,因此不存在缓存局部性 问题,因为没有要访问的数据。无状态仿函数的主要用途是允许编译器内联函数的调用(与自由同名函数相比)

关于c++ - 使没有成员的仿函数成为类成员对象或堆栈对象是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451317/

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