#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() const
? mc
会调用它吗?或者它是由编译器调用,基于一些启发式?
我们怎么看谁叫它?
Object-Oriented Programming in C++表示目标对象调用例程。怎么样?
答案 0 :(得分:3)
编译器在尝试implicit conversion时会生成对yourclass::operator myclass() const
的调用。基本上是作业
mc = yc;
由编译器翻译为
mc = yc.operator myclass();
您甚至可以像上面一行中那样手动调用转换运算符。