gpt4 book ai didi

c++ - 我们什么时候应该使用方法重载与具有不同命名的方法

转载 作者:可可西里 更新时间:2023-11-01 17:06:10 24 4
gpt4 key购买 nike

有时,我觉得方法重载可能会造成困惑。

class a {
public:
void copy(float f);
void copy(double d);
};

a me;
me.copy(1.2); // Not obvious at the first sight on which version we are calling.

解决方法是。

class a {
public:
void copyFloat(float f);
void copyDouble(double d);
};

但是,使用不同名称的方法来执行相同的功能似乎也不是一个好主意。我可以知道,您如何考虑选择方法重载,还是具有不同命名的方法

最佳答案

肯定会重载。

好吧,调用哪个函数并不“明显”(有争议)……那又怎样?你不关心它可以接受不同类型的参数,它只需要做它的事情。如果您有基于不同重载的不同行为,那么您就是在滥用重载,而不是指出其中的缺陷。

一个滥用重载的例子:

// good:
struct has_properties
{
void property1(float); // set property1, which happens to be a float
void property2(int); // set property2, which happens to be an int
};

// bad:
struct has_properties
{
void property(float); // set property1, abusing that it's a float
void property(int); // set property2, abusing that it's an int
};

希望您能看到这里的问题。如果两个函数具有相同的名称,则它们应该执行相同的操作。

更好的是,如果您只是想允许对不同类型进行操作的可能性,只需使用模板即可。 (这可以说是一种重载形式。)

关于c++ - 我们什么时候应该使用方法重载与具有不同命名的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464578/

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