类型敏感语言可以是无类型的吗?

时间:2011-07-25 19:05:19

标签: java c++ types

为什么不能使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) {
    ...

希望你现在能更好地理解我的意图。

3 个答案:

答案 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)

主要是因为类型安全是一件好事。它可以防止您使用字符调用浮点函数。这不是一个问题;它是一种阻止你在脚下射击的功能。