我有一个类,它结合了许多OpenCV的cv::Mat
矩阵。
是否有任何方法可以提供const访问器,允许客户端读取而不写入底层数据,并提供非const访问器,允许客户端读取和写入数据。
我考虑做这样的事情:
class MyClass {
cv::Mat a;
public:
cv::Mat a() { return a; }
const cv::Mat& a() const { return a; }
};
但是这是否能保护通过const访问器被修改的底层数据呢?还是只能保护cv::Mat的头部数据?
a()
返回的值上调用。如果有一些返回对底层数据的非const句柄,则不行。否则,可以。(虽然我希望有人能确认一下)。 - JBLcopy.member1
将使用source.member1
的值进行初始化)来初始化每个成员变量。从这一点出发,这取决于成员类型。如果成员变量不是指针,则很有可能实际上会进行复制,而不是放弃对要保护的数据的指针。 - JBLa()
返回的const引用创建矩阵时实际修改了两个矩阵? - JBL