#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
называет это? Или его вызов сделан компилятором, основанным на некоторой эвристике?
Как мы можем увидеть, кто это назвал?
Объектно-ориентированное программирование на C ++ говорит, что объект назначения вызывает процедуру. Как?
Компилятор генерирует вызов yourclass::operator myclass() const
когда он пытается неявное преобразование. В основном назначение
mc = yc;
переводится компилятором в
mc = yc.operator myclass();
Вы даже можете вызвать оператор преобразования вручную, как это сделано в строке выше.
Других решений пока нет …