- 1
- 2
typedef const AbstractParameter ConstAbstractParameter;
class Parameter: public ConstAbstractParameter{
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+23
typedef const AbstractParameter ConstAbstractParameter;
class Parameter: public ConstAbstractParameter{
GCC это не компилирует, но в 2008 ms vs компилируется без предупреждений. Я это как увидел, так сразу переписал на
class Parameter: public AbstractParameter{
И каковы результаты анализа?
Казнить нельзя помиловать.
b.baz() вызывается без вопросов.
Fail.
Ok.
> class Parameter: public AbstractParameter {
Fail.
Компилировался.
Вот лошадка и п рыгнула.
И так новое свойства такого класса с наследованием от константного класса:
При вызове метода через предка - можно вызывать только константные методы, зато через потомка это ограничение уже не влияет.
g++ подтверждает?
В стандарте с++98 написано: A typedef name (7.1.3) that names a class is a class-name. Про cv ничего не написано.
А вот в с++11 есть такой пункт: "If a typedef-name that names a cv-qualified class type is used where a class-name is required, the cv-qualifiers are ignored."