强制将函数的返回值存储在常量变量中/作为常量处理
Forcing the return value of a function to be stored in a const variable/to be treated as const
这里提出了一个类似的问题:强制常量存储返回值
然而,大部分讨论都集中在"你为什么要这么做?"
假设我有一个结构A和B,它们都包含一个shared_pointer。现在我有了类C。类C包含一个A的实例。C有一个const方法getB(),它返回一个类型为B的对象,该对象是在瞬间创建的,包含a的shared_pointer的副本。
在我的用户案例中,我无法修改A类和B类(恰好是Opencv的IplImage和cv::Mat)
获得我的目标的唯一方法是返回新创建的B const *
吗?(在这方面,这是一个非常有用的答案)
您可以使用proxy
模式:http://www.oodesign.com/proxy-pattern.html
创建一个B
的代理,它将控制对它的访问,并从方法中返回一个代理,而不是B
本身。
class BProxy
{
public:
BProxy(const B &b) : _b(b) {}
void doSomeStuff() {...}
private:
B _b;
};
相关文章:
- 通过多个头文件使用常量变量
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 非常量变量只读位置的赋值
- 使用大量已知常量变量的正确方法
- 无法在具有常量变量大小的类中创建堆栈分配数组
- 这些语句是否等效(静态变量、常量变量和泛型)
- 包含常量变量并包含在多个文件中的标头的链接错误
- 我们如何修改常量变量的值
- 如何在模板类中设置静态常量变量
- 为什么常量变量是模板特殊化所必需的,而不是常量
- 如何在函数中传递常量变量?
- 定义常量变量的最佳方法
- C++ 声明常量变量,但推迟其初始化?
- 如何初始化具有常量变量的结构数组
- 使用常量变量作为维度将矩阵声明为类成员时出现编译器错误
- 使用指针 c++ 更改常量变量
- c++ 类中的静态常量变量和常量变量在存储方面是否有区别
- 为什么 lambda 对象中的局部变量是常量变量?
- 使用常量变量作为数组的大小
- 为许多类可能需要的所有常量变量制作独立的头文件是否是一种很好的做法?