为什么不能使Java或C ++无类型? int,float,double等任何类型都可以从basetype继承,但为什么不是 可能或不适用? 我可以想象像这样的Java-“无类型”函数
void some(BASETYPE anyobject, BASENUMERIC a_number) {
for (int i = 0; i < int(a_number); i ++) {
anyobject.doStuff(i);
}
}
其中int
继承自BASENUMERIC。
修改 对困惑感到抱歉。什么意思不是真正的无类型,但如果任何类型继承自基类型,多态允许我使一个函数可以用任何对象调用,但同时我能够 定义一个特定的类型。
void any(BASETYPE of_any_type, float a_must_be_float) {
...
希望你现在能更好地理解我的意图。
答案 0 :(得分:1)
因为它更慢并且可能容易出错而且具有所有这些隐式转换。顺便说一句,如果你愿意,你可以。如果您使用类似变体的类型(我不知道它是否存在于Java中),您可以为其分配任何类型的变量。
答案 1 :(得分:1)
您已经可以使用模板
执行此操作template<typename BASETYPE, typename BASENUMERIC>
void some(BASETYPE anyobject, BASENUMERIC a_number) {
for (int i = 0; i < int(a_number); i ++) {
anyobject.doStuff(i);
}
}
适用于任何具有dostuff成员函数的BASETYPE,并且可以将BASENUMERIC类型转换为int。
答案 2 :(得分:0)
主要是因为类型安全是一件好事。它可以防止您使用字符调用浮点函数。这不是一个问题;它是一种阻止你在脚下射击的功能。