gpt4 book ai didi

c++ - qt c++ new 类似的方法。我是重载方法、编写新方法还是使用默认参数?

转载 作者:行者123 更新时间:2023-11-30 03:43:48 26 4
gpt4 key购买 nike

我有一个问题:

我有一个巨大的 C++ 程序,我必须根据新的需求进行调整。在程序中,我有一个现有方法,在我的代码中使用了大约 20 次

void doSomething();

现在我需要在我的程序中使用一个非常相似的新方法(使用一次或两次)。当设置标志时,这个新方法需要做一些类似的事情。我有几个想法如何编码。是否有最佳解决方案/风格来做到这一点?

想法 1:编写另一个与 doSomething() 几乎相同的方法。但这意味着重复代码。

void doSomethingElse();

想法 2:重载我的方法(但仍然重复代码)

void doSomething(bool myFlag);

想法 3:使用默认参数并在旧方法 doSomething() 中包含一个 if 语句。

void doSomething(bool myFlag=false); 

是否有最佳解决方案?或者更好的解决方案?

谢谢

商品

最佳答案

将旧方法的公共(public)部分分离为私有(private)/ protected 辅助方法。然后编写您的两个公共(public)方法,以便它们调用辅助方法。

所以基本上您的选项 1,除了不要重复代码。或者可能是选项 2,如果重载而不是引入新方法名称有意义(在这种情况下,请参见下文)。

使用不同命名的方法明确说明了每个调用的作用,因为方法名称直接说明了它,而无需检查 missing/true/false arg 的实际含义。但是如果你想用可选的 arg 和单一方法来做到这一点(至少在公共(public)和 protected 接口(interface)中),最好声明一个枚举,它具有描述性的值名称(另外,如果你需要第三个值,很容易添加,与 bool 值不同)。这就是 Qt 通常所做的 (example) .

关于c++ - qt c++ new 类似的方法。我是重载方法、编写新方法还是使用默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com