Возьмите следующий класс:
class mytype {
double num;
public:
mytype(int a) {
num = sqrt(a);
}
void print() {
cout << num;
}
}
Скажем, есть метод, который принимает mytype:
void foo(mytype a) {
a.print();
}
Является ли законным c ++ (или есть способ реализовать это) для вызова foo (4), который (теоретически) вывел бы 2? Из того, что я могу почерпнуть, вы можете перегружать приведение типов из определенного пользователем класса, но не для этого. Может конструктор сделать это в соответствии со стандартами (при условии, конечно, конструктор не является явным). Надеемся, что в конце концов есть законный закон:
int a;
cin >> a;
foo(a);
Примечание: это, очевидно, не актуальная проблема, а просто пример для публикации. Я не могу просто перегрузить функцию из-за наследования и других проблем, связанных с программой.