Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
romex
45 / 45 / 4
Регистрация: 11.04.2010
Сообщений: 223
#1

Запрещение перегрузки public методов базового класса - C++

04.11.2012, 12:24. Просмотров 622. Ответов 4
Метки нет (Все метки)

Можно ли запретить наследникам перегружать public методы базового класса? Если да то как?
C++
1
2
3
4
5
6
7
8
9
10
11
class base
{
public:
  void theOnlyWay(); // функция которая должна выполняться единственным способом и никак иначе 
}
 
class violator: public base
{
public:
  void theOnlyWay();//как запретить?
}
Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 12:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Запрещение перегрузки public методов базового класса (C++):

Запрещение переинициализации public-поля как члена класса - C++
Здравствуйте! Предположим, у нас есть некий класс, в нем есть public-поле, которое выполняет некоторые служебные функции. Нужно...

Вызов перегрузки базового класса - C++
Начитавшись c# забыл кое-что по с++, никак теперь не могу вспомнить как вызвать перегрузку базового класса в перегрузке наследника. Есть...

Вызов наследуемых методов из базового класса - C++
Всем доброго времени суток, перейду сразу к сути. Код: class Base { protected: public: virtual void...

Вызов методов производного класса из базового - C++
Возможно ли, чтобы class A { void f1() { f2();//если вызвано из B, то вызывается B::f2(), а не A::f2() } void f2(){} }

Вызов переопределенного метода из методов базового класса - C++
Здравствуйте, у меня есть два класса, базовый и производный. В производном классе я переопределяю два метода method1 и method2. В базовом...

Как скрыть из области видимости часть методов базового класса после наследования? - C++
Продолжая тему наследования, в которой было выяснено, что можно вернуть в область видимости часть методов, которые потерялись при...

4
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
04.11.2012, 12:28 #2
Никак.
Это кстати никакая не перегрузка, это сокрытие метода.
1
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
04.11.2012, 12:37 #3
Такой вариант например.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
struct Base
{
   virtual void theOnlyWay() final { };
};
 
struct Der : Base
{
   void theOnlyWay();
};
http://liveworkspace.org/code/0a9d9b31e7a4997fac0110d8a57c9602
1
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
04.11.2012, 12:43 #4
А Visual C++ 10, 11 поддерживают? Если да, то круто.
0
Croessmah
Ушел
13762 / 8013 / 922
Регистрация: 27.09.2012
Сообщений: 19,722
Записей в блоге: 3
Завершенные тесты: 1
04.11.2012, 12:43 #5
12 студия поддерживает точно.
0
04.11.2012, 12:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 12:43
Привет! Вот еще темы с ответами:

Наследование, и перегрузки методов - C++
Вопрос: есть ли какие нибудь красивые решения данной проблемы? Рассмотрим ниже представленный код: class Test1 { public:...

Вызов методов базового и производного классов - C++
Народ, объясните тупому механику раннего связывания. Вывод программы, что ниже, 22. Хотя если вызывать непосредственно функцию f, будет...

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Создание указателя типа базового класса на экземпляр производного класса - C++
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru