Re[5]: Спецификатор virtual при перекрытии функции
От: Erop Россия  
Дата: 31.08.07 14:12
Оценка:
Здравствуйте, Sergey, Вы писали:

S>...Ну и заодно все конструкторы в классе и его наследниках чтоб по умолчанию становились explicit (а это уже вроде в C++0x обещают).


Что, включая конструктор копии?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Спецификатор virtual при перекрытии функции
От: Sergey Россия  
Дата: 31.08.07 14:37
Оценка:
> S>...Ну и заодно все конструкторы в классе и его наследниках чтоб по умолчанию становились explicit (а это уже вроде в C++0x обещают).
>
> Что, включая конструктор копии?

А их автогенерацию с этим спецификатором вообще отключать нафиг, пока программист свой конструктор копии не напишет. Ибо нефиг
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf Но это вроде отклонили, по причине недостаточного интереса.

Насчет оверрайда было http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2108.html. Мне там синтаксис не нравится.

А вот про ключевое слово implicit для конструкторв в классах, объявленных как explicit, чето не найду — может и померещилось.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[2]: Спецификатор virtual при перекрытии функции
От: AstroMan  
Дата: 01.09.07 08:58
Оценка: 2 (2) +2
Здравствуйте, rg45, Вы писали:

R>ИМХО, возможность при перекрытии функций опускать слово virtual — удобство весьма сомнительное, лучше бы его не было вовсе. Смотришь на функцию — если virtual есть, значит виртуальная, а если нет — лезь вверх по иерархии классов и выясняй.


Плохая идея перекрывать виртуальную функцию с реализацией в базовом классе. Если есть желание разместить часть реализации в базовом классе, то юзайте паттерн Шаблонный Метод или NVI. Перекрывайте только чисто виртуальные функции. Тогда непрозрачность перекрытия по иерархии отпадает.

Если держать себя в руках, то
virtual ... = 0; // первое объявление виртуальной функции
virtual ...; // даем реализацию виртуальной функции
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.