Сомневаюсь, что компилятор разделяет их (в контексте кода) на явные и неявные. Иначе это исправить было бы просто
Суть в том, что неявный оператор всегда соответствует типу объекта. Т.е. если объект типа B, то и неявный оператор у него с типом const B&. Тип A он не принимает. Но это в C++.
Кстати, с типом оператора, похоже, как раз таки все нормально
Сначала он ищет оператор В::, если его нет, тогда уже ищет в А::, если и там нет, тогда считает свой долг выполненным и ничего не делает (хотя указатель в итоге битый) :)
Да и уберите вы наконец эту звёздочку после B, глаз режет ) С этим багом то уже всё выяснили.
Лично мне объектные переменные без звездочки глаз режут )) Одна из противных ошибок - написать A a=new A вместо *а и долго не понимать в чем дело) Я наоборот показал, что все работает правильно, если последовать Вашему совету и объявить приватный оп.=&. И в этом случае тогда редактор сразу выдаст ошибку. Буду теперь так делать всегда ))
Особенности double знаю, но не такие, что если поменять порядок сложения (за исключением относительно сильно отличных чисел), то результат будет разный! Просьба объяснить глупцу, из-за чего здесь такое происходит?
В исходнике нужно смотреть только на две нижние строки.
Просьба объяснить глупцу, из-за чего здесь такое происходит?
Допустим мы можем оперировать только с нечётными числами, а если результат арифметической операции становится чётным, то он полагается равным ближайшему сверху нечётному числу, тогда:
Сомневаюсь, что компилятор разделяет их (в контексте кода) на явные и неявные. Иначе это исправить было бы просто
Кстати, с типом оператора, похоже, как раз таки все нормально
Сначала он ищет оператор В::, если его нет, тогда уже ищет в А::, если и там нет, тогда считает свой долг выполненным и ничего не делает (хотя указатель в итоге битый) :)
если и там нет, тогда считает свой долг выполненным и ничего не делает (хотя указатель в итоге битый) :)
Почему ничего не делает? Он копирует неявным (автоматическим) оператором operator=(const A&), чего делать не должен.
Да и уберите вы наконец эту звёздочку после B, глаз режет ) С этим багом то уже всё выяснили.
Да и уберите вы наконец эту звёздочку после B, глаз режет ) С этим багом то уже всё выяснили.
Лично мне объектные переменные без звездочки глаз режут )) Одна из противных ошибок - написать A a=new A вместо *а и долго не понимать в чем дело) Я наоборот показал, что все работает правильно, если последовать Вашему совету и объявить приватный оп.=&. И в этом случае тогда редактор сразу выдаст ошибку. Буду теперь так делать всегда ))
Особенности double знаю, но не такие, что если поменять порядок сложения (за исключением относительно сильно отличных чисел), то результат будет разный! Просьба объяснить глупцу, из-за чего здесь такое происходит?
В исходнике нужно смотреть только на две нижние строки.
Ошибка для разработчиков.
Скрипт не компилируется, определите почему))). Используйте прикрепленный файл.
Этот же файл:
Ошибка для разработчиков.
Скрипт не компилируется, определите почему))). Используйте прикрепленный файл.
Этот же файл:
Все компилируется, удалите строку Error
Все компилируется, удалите строку Error
ограничение на длину строки в редакторе
ограничение на длину строки в редакторе
Строка не отображается, когда она становиться больше 4095 символов.
Просьба объяснить глупцу, из-за чего здесь такое происходит?
Допустим мы можем оперировать только с нечётными числами, а если результат арифметической операции становится чётным, то он полагается равным ближайшему сверху нечётному числу, тогда:
33 != 31