Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
hastal
1 / 1 / 0
Регистрация: 16.01.2016
Сообщений: 97
#1

Виртуальная неоднозначность - C++

11.04.2016, 21:43. Просмотров 172. Ответов 5
Метки нет (Все метки)

Не понимаю пример из книги С.Праты:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class B
{
public:
    short q();
};
 
class C : virtual public B
{
public:
    long q();
    int omg();
    ...
};
 
class D :public C
{
    ...
};
 
class E :virtual public B
{
private:
    int omg();
    ...
};
 
class F :public D, public E
{
    ...
};
"Если даже C::q() будет закрытым, он будет доминировать над D::q(). В этом случае в классе F возможен вызов B::q(), но неуточненный q() будет ссылаться на недоступный метод C::q()."
Почему метод базового класса закрывает метод производного класса?? Как это логически объяснить? Ведь обычно метод производного класса с таким же именем как у базового класса закрывает все сигнатуры этого метода в базовом классе.

Добавлено через 8 часов 52 минуты
Help pls
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2016, 21:43     Виртуальная неоднозначность
Посмотрите здесь:

неоднозначность, explicit - C++
Добрый вечер. написал такой шаблонный класс: template <class T> class Container { private: ...... public: ...

Неоднозначность декларации - C++
Итак уважаемые знатоки: class Foo{ public: Foo(){}; }; Foo Bar(); Внимание вопрос: как уважающий себя...

Неоднозначность и multiple inheritance - C++
Есть такая иерархия и main(): #include <iostream> #include <string> #include <complex> using namespace std; class Base { ...

Неоднозначность переменной count - C++
Доброго времени суток. Использую VS2013. Подскажите пожалуйста, по какой причине глобальная переменная, в приведенном ниже коде, не...

Неоднозначность при множественном наследовании - C++
Привет всем, столкнулся с проблемой при множественном наследовании классов. Надеюсь, кто-нибудь поможет как можно скорее. Ошибка...

компилятор находит неоднозначность при вызове round(i) - C++
Доброго времени суток! Подскажите, компилятор находит неодназначтность в строке 26 *вызов функции round(i)* ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shamsik
-42 / 17 / 5
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
Завершенные тесты: 2
11.04.2016, 21:47     Виртуальная неоднозначность #2
https://habrahabr.ru/sandbox/41142/
hastal
1 / 1 / 0
Регистрация: 16.01.2016
Сообщений: 97
11.04.2016, 22:30  [ТС]     Виртуальная неоднозначность #3
Цитата Сообщение от Shamsik Посмотреть сообщение
https://habrahabr.ru/sandbox/41142/
typedef std::tr1::shared_ptr<T> Ptr; Я не знаю шаблонов, поэтому мне не сильно понятен код, приведите мне, пожалуйста, пример без использования шаблонов, чтоб я смог его нормально понять. И то что в классе можно явно указывать член какого класса вызывать это и так ясно, я хочу понять то, что описал выше, то есть как и почему так это дело работает по-умолчанию.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
11.04.2016, 23:18     Виртуальная неоднозначность #4
А всю программу можете привести?
hastal
1 / 1 / 0
Регистрация: 16.01.2016
Сообщений: 97
11.04.2016, 23:22  [ТС]     Виртуальная неоднозначность #5
Цитата Сообщение от Mr.X Посмотреть сообщение
А всю программу можете привести?
Нет в книге всего один участок кода, который я полностью переписал и два небольших абзаца текста. Я привел половину абзаца, которую я не понимаю. Написать полный текст?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2016, 23:28     Виртуальная неоднозначность
Еще ссылки по теме:

Виртуальная функция - C++
Создайте класс Matematica, определите в нем виртуальную функцию-член matem(int x, int y), которая выводит на экран значения параметров....

Виртуальная машина - C++
Просто задание на практику. В ходе разбора самого задания возникают некоторые вопросы, помогите пожалуйста разобраться. Само задание всё...

виртуальная функция - C++
class B { private: int a; int b; public: virtual void show();//есть виртуальная функция,которая выводит a и b } class...

Виртуальная функция - C++
Всем доброго времени суток! Прошу помочь с одной проблемой. Собственно, вот программа: #include &lt;iostream&gt; #include &lt;conio.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Shamsik
-42 / 17 / 5
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
Завершенные тесты: 2
11.04.2016, 23:28     Виртуальная неоднозначность #6
typedef используется для приданию стандартным типам (...) нового имени.

C++
1
2
3
4
typedef std::tr1::shared_ptr<T> Ptr;
 
 
//Ptr - Можете использовать как  std::tr1::shared_ptr<T>
Добавлено через 38 секунд
https://msdn.microsoft.com/ru-ru/library/bb385731.aspx


Wikipedia Тут найдете ответ на ваш вопрос почитайте
Yandex
Объявления
11.04.2016, 23:28     Виртуальная неоднозначность
Ответ Создать тему
Опции темы

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