c++ - 函数可以是 const 也可以不是,取决于参数
问题描述
我试图通过促进重复代码来重构一些代码。让我们想象一下我最终得到了一个像这样的类:
class A {
public:
void method1()
{
do_work(true);
}
void method2() const
{
do_work(false);
}
private:
void do_work(bool flag) {
...
if(flag)
this->data = 0;
}
}
但是这不会编译,因为 do_work 不是 const,即使使用 flag = false 调用此方法是 const。有没有办法在不再次拆分实现的情况下“解决”这个问题?
解决方案
do_work
重构得很差,作为一个“有时是 const”的函数。
分离出const
和非常量逻辑。
class A {
void method1()
{
do_work();
this->data = 0;
}
void method2() const
{
do_work();
}
private:
void do_work() const {
...
}
}
推荐阅读
- julia - 2D (Fourier) Spaces with ApproxFun.jl
- tfs - How to direct my release/deployment based on web.config file in TFS 2015
- python - 替代 Python For 循环以获得更快的结果
- python - 在虚拟窗口上使用 google-cloud-vision api 在时间范围内出现无效的 JWT 错误
- reactjs - 从单个文件导出的 Material UI v4 makeStyles 在刷新时不保留样式
- sql - Combining Dense_Rank() and Lag() in the same column
- javascript - 为什么我只能在首先检查它是否存在之后才能调用它?
- gradle - 如何将 Gradle 中的 srcPaths 设置为子目录集合中的特定子目录
- javascript - 在 external.js 文件中调用 php 变量
- numpy - 如何为每行搜索大于给定值的值数