Не могу понять, что таким образом перегружается. Вроде какая-то префиксная перегрузка указателя на тип void. Поэкспериментировал, компилятор матюкается если перегруженный оператор принимает, или возвращает какое-либо значение. Т.е. насколько я понял он имеет только this. Также допустимы, operator void * () const; operator int * (); ....Встретил такое в потоках с++, когда увидел следующее:Цитироватьchar fileName[80];cout > fileName;ifstream fin(fileName);if(fin){ /*Начинка*/}fin.close();Задумался как if(fin) знает, что нужно вернуть значение fin.good() (или что-то другое?) и обратил внимание на эту непонятную перегрузку. Но насколько я помню по Си без ++ там под if должен быть указатель, а не объект. Т.е у меня два варианта, либо это какая-то перегрузка, где флаг объекта возвращается, либо, как-то объект указателем подменяется. Но все-равно механизм непонятен.
|