如何调用用户定义对象的类型转换例程?

时间:2015-11-18 04:36:38

标签: c++ type-conversion custom-data-type

#include <iostream>
using namespace std;
class myclass
{};

class yourclass
{
    public:     
    operator myclass() const; 
};

yourclass::operator myclass() const
{}

int main() {
    // your code goes here

    yourclass yc;

    myclass mc;

    mc=yc;
    return 0;
}

谁致电yourclass::operator myclass() constmc会调用它吗?或者它是由编译器调用,基于一些启发式?

我们怎么看谁叫它?

Object-Oriented Programming in C++表示目标对象调用例程。怎么样?

1 个答案:

答案 0 :(得分:3)

编译器在尝试implicit conversion时会生成对yourclass::operator myclass() const的调用。基本上是作业

mc = yc;

由编译器翻译为

mc = yc.operator myclass();

您甚至可以像上面一行中那样手动调用转换运算符。