Как называется процедура преобразования типов пользовательских объектов?

#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 ++ говорит, что объект назначения вызывает процедуру. Как?

1

Решение

Компилятор генерирует вызов yourclass::operator myclass() const когда он пытается неявное преобразование. В основном назначение

mc = yc;

переводится компилятором в

mc = yc.operator myclass();

Вы даже можете вызвать оператор преобразования вручную, как это сделано в строке выше.

3

Другие решения

Других решений пока нет …