На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Нужен пример неизменяемого класса и класса от которого нельзя наследоваться. , Нужен пример неизменяемого класса и класса от которого нельзя наследоваться.
    Здравствуйте! Нужно привести пример неизменяемого класса и класса от которого нельзя наследоваться.
      ExpandedWrap disabled
        struct A {
            virtual ~A() final;
        };
         
        struct B : public A { // error
        };


      Добавлено
      а что такое не изменяемый класс я не понял
        А что такое final?
        Я всегда думал что если класс имеет приватный деструктор - то от него нельзя отнаследоваться, но вот эти всякие final - херня какая то... Это из нового стандарта? :huh:

        Добавлено
        Цитата Dmitriy78781 @
        пример неизменяемого класса

        Тоже не понял. Может это тот, у которого все члены приватные и класс имеет только геттеры, и конструктор - через который инициализируются эти самые приватные члены класса ? Или не то?
          Цитата KILLER @
          А что такое final?
          Я всегда думал что если класс имеет приватный деструктор - то от него нельзя отнаследоваться, но вот эти всякие final - херня какая то... Это из нового стандарта?

          Да, из нового. Там даже лучше можно
          ExpandedWrap disabled
            struct A final {
            };
             
            struct B : public A { // error
            };

          А как с приватным деструктором жить-то? как удалять-то? С приватным конструктором еще можно понять, конструировать через статическую функцию.
            Цитата XandoX @
            Да, из нового. Там даже лучше можно

            Что оно означает то хоть?

            Цитата XandoX @
            А как с приватным деструктором жить-то? как удалять-то?

            А какая практическая цель от такого класса то? Я вот 5 с половиной лет на С++ программил, ниразу мне такого говна не нужно было. Зачем оно вообще? Разве что на собеседованиях или в учебных целях показать что так можно...

            Добавлено
            Цитата XandoX @
            С приватным конструктором еще можно понять, конструировать через статическую функцию.

            С приватным конструктором оно часто кстати нужно. А вот с приватным деструктором - только на такие вопросы, что ТС задал - отвечать. Где оно реально на практике нужно? Мне аж интересно стало.
              Цитата XandoX @
              а что такое не изменяемый класс я не понял

              Может имелось в виду, класс у которого все member'ы объявлены как const??

              ExpandedWrap disabled
                class A {
                public:
                const int m_i;
                const double m_d;
                ...
                };


              Это ведет к тому, что все методы также тогут быть объявлены как const и не смогут менять *this.

              Кстати тоже самое скорее всего будет, если объявить

              ExpandedWrap disabled
                const A a;
                Цитата KILLER @
                Что оно означает то хоть?

                Ну то и значит, что от класса нельзя наследоваться. Или что это лист в иерархии типов. В случае когда final помечается виртуальный метод - что этот метод нельзя больше переопределять (кстати в 11 стандарте появился override для виртуальных методов, вот он действительно полезный). Смысл во всем этом такойже как во всех этих public, private и прочей объектно-ориентированой мишуре. Но сам я тоже ни разу такое не использовал, по этому более вразумительного примера привести не могу.
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0278 ]   [ 15 queries used ]   [ Generated: 18.05.24, 16:52 GMT ]