什么时候应该使用模板和何时重载功能?

App*_*ker 1 c++ oop templates programming-languages

我很迷惑.我似乎永远不会决定使用什么,模板或重载功能.过载需要更多编码.那么在什么情况下首选使用模板和什么重载功能?

例如,我最近不得不在制作小型GBA游戏时做出这个决定.u16int有两种类型,我决定使用重载函数.

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; }
Run Code Online (Sandbox Code Playgroud)

我应该使用模板吗?在什么情况下我应该使用重载功能?

Alo*_*ave 8

基本规则应该是:

如果要对不同数据类型执行相同的功能/操作,请使用模板.

如果要对不同/相同的数据类型执行不同的功能/操作,请使用重载的功能

此外,当你真正需要一个重载函数而不是模板时,很好的衡量标准是当你为模板化的函数版本制作太多明确的特化时.

在您的示例中,如果您在两个函数版本中执行相同的操作,则应使用模板,否则应使用重载函数.

  • **我可以隐藏莫尔熊吗?**(+1) (3认同)
  • @Als他的意思是你有**很多大胆的文字** (2认同)