我有一个功能:
void AddImage(const Image &im);
此功能不需要更改图像,但它将图像存储为const引用,以供以后使用。因此,此功能不应允许临时使用。在没有任何预防措施的情况下,以下工作:
Image GetImage();
...
AddImage(GetImage());
有没有办法防止此函数调用?
最佳答案
有几种机制可以防止将临时参数传递给const ref参数。
void AddImage(const Image &&) = delete;
void AddImage(const Image*)
。此方法将在C++ 11之前的void AddImage(std::reference_wrapper<const Image>)
使用支持C++ 11的编译器时,首选第一种方法。这使意图很明确。第二种方法需要对
nullptr
进行运行时检查,并且无法传达图像不能为空的想法。第三种方法行之有效,使意图很明确,但是,它太明确了。关于c++ - 防止为const ref参数传递临时值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40790126/