在我的C++应用程序中(使用Visual Studio 2010),我需要存储一个std :: function,如下所示:
class MyClass
{
public:
typedef std::function<int(int)> MyFunction;
MyClass (Myfunction &myFunction);
private:
MyFunction m_myFunction; // Should I use this one?
MyFunction &m_myFunction; // Or should I use this one?
};
Run Code Online (Sandbox Code Playgroud)
如您所见,我在构造函数中添加了函数参数作为引用.
但是,在我的班级中存储该功能的最佳方法是什么?
我的直觉是说存储引用是安全的(甚至是const引用).我希望编译器在编译时为lambda生成代码,并在应用程序运行时将此可执行代码保存在"虚拟"内存中.因此,可执行代码永远不会被"删除",我可以安全地存储对它的引用.但这是真的吗?