App*_*ker 1 c++ oop templates programming-languages
我很迷惑.我似乎永远不会决定使用什么,模板或重载功能.过载需要更多编码.那么在什么情况下首选使用模板和什么重载功能?
例如,我最近不得不在制作小型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; }
Run Code Online (Sandbox Code Playgroud)
我应该使用模板吗?在什么情况下我应该使用重载功能?
基本规则应该是:
如果要对不同数据类型执行相同的功能/操作,请使用模板.
如果要对不同/相同的数据类型执行不同的功能/操作,请使用重载的功能
此外,当你真正需要一个重载函数而不是模板时,很好的衡量标准是当你为模板化的函数版本制作太多明确的特化时.
在您的示例中,如果您在两个函数版本中执行相同的操作,则应使用模板,否则应使用重载函数.