在一个const函数中无法修改类成员的值,通过试用mutable可以改变这种窘况。次关键字在Mock测试中(MockTest)很有用:
class ObMockMergerAsyncRpcStub : public ObMergerAsyncRpcStub
{
public:
ObMockMergerAsyncRpcStub()
{
rpc_events_list_.init(1024, rpc_events_, 0);
}
virtual ~ObMockMergerAsyncRpcStub(){}
virtual int scan(const int64_t timeout, const ObServer & server,
const ObScanParam & scan_param, ObMergerRpcEvent & result) const
{
if(!rpc_events_list_.push_back(&result))
{
TBSYS_LOG(ERROR, "fail to save rpc result");
}
else
{
TBSYS_LOG(INFO, "a RPC result save to rpc_event_list_");
}
return OB_SUCCESS;
}
mutable ObMergerRpcEvent *rpc_events_[1024];
mutable ObArrayHelper<ObMergerRpcEvent*> rpc_events_list_;
};
本文深入探讨了在C++中使用mutable关键字在const函数中修改类成员的方法,并通过Mock测试场景展示其实际应用。重点介绍了如何在不破坏常量性的前提下,灵活地调整类的行为,特别适用于测试框架和动态行为调整。
1049

被折叠的 条评论
为什么被折叠?



