【发布时间】:2022-01-12 23:11:25
【问题描述】:
这是一个简单的例子:
int function (int n) {
//code
}
long long function (long long n) {
//absolutely the same code but intended to work with bigger values
}
我正在考虑节省额外的内存(如果您将它与 small 类型的变量一起使用)并使其更通用(如果您将它与 big 类型的变量一起使用)
我希望你能明白我的想法 - 如果你在其中放 15 之类的东西,不要使用 long long,而是对较小的类型(如 int)使用重载。
我想我在这里遗漏了一些东西。我什至应该让这个超载吗?我能否在不为 每个现有 integer 类型(short、int、长长长长……)?
【问题讨论】:
-
您可以使用
template<typename T> T func(T n),甚至template<std::integral INT> INT func(INT n)将其限制为整数类型 -
15是一个int,因此它会调用采用int的版本。重载决议发生在编译时,参数的实际 value 是一个未考虑的运行时属性。 -
还节省额外的内存 — 它真的可以节省任何记忆吗?您需要即时分配 100 万个
T类型的对象,还是只分配return n*2?
标签: c++ function memory overloading