C ++类:读取值表现为不同的类型

时间:2017-06-26 14:57:57

标签: c++ class operator-overloading assignment-operator

我想创建一个类似于此的类:

class MyTime {
public:
    int seconds;
    int useconds;

    /*** functions ***/
}

但其行为如下:

MyTime now;
double current_time = now; // returns double representing seconds

有没有办法在不必定义asDoubleSeconds()函数的情况下执行此操作?我可以通过以某种方式重载赋值运算符来改变行为吗?

如果没有,有没有办法做这样的事情:

double current_time = double(now);

1 个答案:

答案 0 :(得分:4)

是的,实施user-defined conversion operator

class MyTime {
    // ...

    operator double() const;
};

MyTime::operator double() const {
    // compute and return a double
}