C ++中不同参数的多个构造函数

时间:2014-10-27 22:20:58

标签: c++

我对C ++很陌生,我想知道是否有任何方法可以复制构造函数,并且传递的参数有变化。 我需要识别正确的给定值(浮点数或整数),检查浮点数是否可以很好地转换为整数(例如1.0),如果我的值通过测试,则调用另一个接受两个整数的构造函数。

如果有人提出改善此解决方案的任何提示,那就太棒了。

Fraction(int n, int d) : numerator(n), denominator(d) {
    simplify(n, d);
}

Fraction(float n, float d) {
    if (!isInteger(n) && !isInteger(d)) {
        throw invalid_argument("Fractions only accept real numbers.");
    } else {
        Fraction(int(n), int(d));
    }
}

Fraction(int n, float d) {
    if (!isInteger(n) && !isInteger(d)) {
        throw invalid_argument("Fractions only accept real numbers.");
    } else {
        Fraction(int(n), int(d));
    }
}

Fraction(float n, int d) {
    if (!isInteger(n) && !isInteger(d)) {
        throw invalid_argument("Fractions only accept real numbers.");
    } else {
        Fraction(int(n), int(d));
    }
}

1 个答案:

答案 0 :(得分:1)

那么你只能使用浮子ctor并测试你的参数 如果你只有两个ctors一个用于整数,一个用于浮点数,那么只有当两个数字都是int时才会调用ctor。否则将调用浮动ctor。