我很困惑。我似乎从来没有决定使用什么,模板还是重载函数。重载需要更多编码。那么在什么情况下更喜欢使用模板以及在什么重载函数中?
例如,我最近在制作一款小型 GBA 游戏时不得不做出这个决定。有两种类型 u16 和 int,我决定使用重载函数。
inline void Point::Move(int x, int y) {_ix += x; _iy += y; }
inline void Point::Move(u16 x, u16 y) {_ix += (int) x; _iy += (int) y; }
我应该改用模板吗?在什么情况下我应该使用重载函数?
最佳答案
基本规则应该是:
如果您想对不同的数据类型执行相同的功能/操作,请使用模板。
如果您想对不同/相同的数据类型执行不同的功能/操作,请使用重载函数
此外,当您真正需要重载函数而不是模板时,一个很好的衡量标准是您是否为函数的模板版本进行了过多的显式特化。
在您的示例中,如果您在函数的两个版本中执行相同的操作,则应使用模板,否则应使用重载函数。
关于c++ - 什么时候应该使用模板,什么时候重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640005/