繁体   English   中英

函数可能是 const 或不是 const 取决于参数

Function may be const or not depending on arguments

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我试图通过 facotirising 重复代码来重构一些代码。 让我们想象一下,我最终得到了一个类:

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。 有没有办法在不再次拆分实现的情况下“修复”这个问题?

1 个回复

do_work重构得很差,作为一个“有时是常量”的函数。

const和非常量逻辑分开。

class A {

  void method1() 
  {
    do_work();
    this->data = 0;
  }

  void method2() const
  {
    do_work();
  }

private:

  void do_work() const {
    ...
  }
}
1 java中的const函数参数?

有没有办法在Java中实现类似于C ++的const东西? 具体来说,我有一个像 而且我想 在签名中明确表示它不会修改它的论点, 和 强制它不修改它的参数(最好是在编译时,但插入运行时断言也可以)。 现在我知道java严格按引用传递(我只是戏弄,我知道它是 ...

2 在C中将函数参数声明为const

在C中将函数的参数声明为const有什么用? 它对性能有影响吗? 例如,为什么您更喜欢f1而不是f2? 还是f2到f1? ...

2018-08-08 10:22:44 4 130   c/ const
3 打字稿:取决于前面的参数的可变函数参数

这个问题以前肯定有人问过,我几乎可以肯定。 然而: 我找不到任何这样的问题 Typescript 在最近取得了重大飞跃,因此现有的答案可能已经过时。 我在代码中常用的东西是用于函数参数的扩展运算符,允许我接收可变长度的参数数组。 我现在要做的是为一个函数创建 TS 类型定义,其中arg ...

4 Kotlin,泛型和可能没有参数的函数

我正在尝试以一种非常常见的模式来概括样板,而Kotlin使我非常接近。 我建立了一个充当侦听器管理器的类,如下所示: 它可以如下使用: 到现在为止还挺好。 但是,如果侦听器没有参数怎么办? 或进一步延伸多个参数。 我可以通过以下方式进行抓取: 但它闻起来很 ...

6 在C中将非const变量传递给具有const参数的函数

我有一个如下功能 我在其他函数中调用此函数。 这不会在c中引发任何错误,但是我觉得有些不正确。 当我将非const变量传递给期望const变量作为参数的函数时会发生什么。 ...

2017-12-04 11:36:56 1 615   c
7 在C中将非常量参数传递给常量函数参数

我有一个函数,它指定一个const参数来指示调用者它不会被修改: 我将一个非常量变量作为参数传递给func1 : gcc报告: 处理这种情况的正确方法是什么? 创建my_string的const副本似乎有点多,但是简单地进行铸造似乎my_string了警告。 ...

2017-06-08 08:42:28 3 1705   c/ gcc/ const
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM