Re: Философический вопрос про автоматический вывод типов.
От: AVC Россия  
Дата: 05.02.06 21:42
Оценка: :)
Здравствуйте, c-smile, Вы писали:

CS>Личное замечание:

CS>Такая недетерминированность в C++ является источником очень неприятных и дурных ошибок.
CS>Один раз очень долго искал в чем проблема. Оказалось в наличии двух конструкторов у
CS>объекта: cls(int n) и cls(bool b). (или что-то подобное — не помню)
CS>Я имел ввиду одно а думатель молча выводил другой тип... Причем разные думатели
CS>(компиляторы) думали по разному.

Вот еще один пример "из жизни" (я его, конечно, схематизировал), связанный с этой стороной Си++.
Компилятор спокойно приводит bool к float, как будто так и надо.

#include <stdio.h>

class Float {
    float _float;
public:
    Float(float x) : _float(x) { }

    // следующая строка была закомментирована по ошибке (просто опечатка)
    //operator float() { return _float; }

    // в реальной программе bool() проверяет отличие Float от нуля
    // чтобы обеспечить корректную работу конструкции if (F) ...
    operator bool() { return (_float != 0); }
};

int main()
{
    Float F = 3.1415926536f; // Кто и шутя, и скоро пожелаетъ Пи узнать число, ужъ знаетъ.
    float x = F;
    printf("%f\n", x); // Что напечаталось? Правильно, 1.000000
    return 0;
}

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.