+ Ответить в теме
Страница 1 из 4
1 2 3 4 ПоследняяПоследняя
Показано с 1 по 10 из 31

Тема: Как запретить наследование от класса?

  1. #1
    programmer Vanush is on a distinguished road
    Регистрация
    10.01.2008
    Сообщений
    50
    Вес репутации
    11

    Arrow Как запретить наследование от класса?

    Привет всем.

    Есть класс А, и мы можем создать объект класса А. Надо сделать так чтобы не создавалось объект типа производного от А.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Хыиуду has a spectacular aura about Хыиуду has a spectacular aura about
    Регистрация
    06.03.2005
    Адрес
    Москва
    Сообщений
    2,388
    Вес репутации
    19

    По умолчанию Re: не смог найти хорошое имя

    А в чем состоит вопрос? Объекты сами собой создаются?
    Искусство программирования - заставить компьютер делать все то, что вам делать лень.
    Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.

  4. #3
    programmer Vanush is on a distinguished road
    Регистрация
    10.01.2008
    Сообщений
    50
    Вес репутации
    11

    Arrow Re: не смог найти хорошое имя

    Например у тебя есть класс А, и ты не хочеш чтобы кто-то унаследовал от А( даже если смог унаследовать то не смог создать объект этого класса, то есть наследование не имеет смысл )

  5. #4
    system architect BBB is on a distinguished road
    Регистрация
    27.12.2005
    Сообщений
    1,272
    Вес репутации
    15

    По умолчанию Re: не смог найти хорошое имя

    А смысл? Что такого можно сделать через экземпляр наследника класса A, но нельзя сделать через экземпляр самогО класса A?
    Если какое-то расширение функционала, то что помешает (даже если Вам удастся реализовать задуманное) кому-то создась свой совершенно произвольный класс (этакий "псевдонаследник" класса A), в котором будет объявлен член типа A? Разница в этих двух случаях (наследник от A и новый класс, имеющий член класса A) будет лишь в доступе у protected-членам класса A. Наследник будет иметь к ним доступ, а новый класс с членом типа A - нет.

    Вообще, лучше бы описали изначальную задачу. А то, похоже, Вы придумали некий сбоеобразый способ ее решение, а теперь интересуетесь, как этот сбоеобразый способ осуществить. Скорее всего можно придумать менее экстравагантный способ решения изначальной задачи.

  6. #5
    developer Airhand is on a distinguished road Аватар для Airhand
    Регистрация
    06.10.2005
    Адрес
    Dnepropetrovsk
    Возраст
    38
    Сообщений
    234
    Вес репутации
    13

    По умолчанию Re: не смог найти хорошое имя

    Это просто: помести конструктор класса А в приватную секцию и никто не сможет создать экземпляр класса А и его наследников.

  7. #6
    programmer Vanush is on a distinguished road
    Регистрация
    10.01.2008
    Сообщений
    50
    Вес репутации
    11

    Arrow Re: не смог найти хорошое имя

    Нужно чтобы создавалось объект класса А, и не создавалось производного от А.

    И по поводу смысла: не все задачи имеют смысл, просто для мышления. Вопрос мне дал мой друг а ему дали во время интервью.

  8. #7
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: не смог найти хорошое имя

    А где твой друг живёт? Я тоже задаю такой вопрос на собеседовании и естественно знаю на него ответ
    Последний раз редактировалось Romeo; 12.12.2008 в 13:29.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  9. #8
    programmer Vanush is on a distinguished road
    Регистрация
    10.01.2008
    Сообщений
    50
    Вес репутации
    11

    По умолчанию Re: не смог найти хорошое имя

    В Ереване. Ну так скажи ответ если знаеш.

  10. #9
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: не смог найти хорошое имя

    Код cpp:
    1. class Main;
    2.  
    3. class Denier
    4. {
    5.     friend class Main;
    6. private:
    7.     Denier(){}
    8. };
    9.  
    10. class Main : public virtual Denier
    11. {
    12. public:
    13.     Main(){}
    14.     // ...
    15. };
    16.  
    17. class Sub : public Main
    18. {
    19. public:
    20.     Sub() {} // 'Denier::Denier()' is not accessible
    21. };
    22.  
    23. void main()
    24. {
    25.     Main m; // no problem
    26. }
    Последний раз редактировалось Romeo; 11.12.2008 в 21:48.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  11. #10
    system architect BBB is on a distinguished road
    Регистрация
    27.12.2005
    Сообщений
    1,272
    Вес репутации
    15

    По умолчанию Re: не смог найти хорошое имя

    Romeo, лихо закручен сюжет!
    А скажи, почему в декларации Main указано "public virtual Denier"? Т.е. принципиально ли здесь virtual-наследование и что оно в данном случае дает?

+ Ответить в теме
Страница 1 из 4
1 2 3 4 ПоследняяПоследняя

Похожие темы

  1. Наследование
    Скажите, пожалуйста, как от класса Pair class Pair { public: Pair(){A=0;B=0;} ~Pair(){} private: int A,B; };
    от Monopo в разделе C и C++
  2. Множественное наследование
    Где искать инфу по множественному наследоваю? Желательно с примерами.
    от atavin-ta в разделе C и C++
  3. Множественное наследование
    Чтото я не пойму почему не компелируется такой код: class a{ public: a(){} virtual ~a(){} virtual bool f1()=0; virtual bool...
    от ssDev в разделе C и C++
  4. КАК сделать наследование прав доступа при копировании папки?
    Стоит Win XP. Есть 2 папки (Текущие проекты и Шаблон проектов). Их структура: В "Текущие проекты" море проектов (папки Проект 1, Проект 2....)....
    от BelkaJul в разделе Операционные системы
  5. Как запретить Resize дя JFrame ???
    SWING Наверняка многие сталкивались с тем, что при развороте окна (JFrame)во весь экран либо растягиванием мышью весь гуй плывет как.... В...
    от Oleg_S в разделе Java

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения