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

Полиморфизм и private методы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура проекта http://www.cyberforum.ru/cpp-beginners/thread939594.html
Приветствую всех! В общем интересует меня вот что: структура проектов с большим количеством файлов. Обычно у меня один класс - один хедер и один или несколько cpp. Но когда проект разрастается, начинаются проблемы. Все усложняет огромное количество инклудов, хедеров и cpp. Приходится шаманить с pragma once, предварительными объявлениями, указателями на классы, экстернами и прочей ерундой. Для...
C++ Компиляция dll на win8x64 и ошибка на winXP Компилирую длл библиотеку на Windows 8 (x64), потом пытаюсь воспользоваться на windows xp и вылеатет Точка входа в процедуру GetTickCount64 не найдена в библиотеке DLL KERNEL32.dll. http://www.cyberforum.ru/cpp-beginners/thread939593.html
C++ Альтернатива if (.) {.} (тернарный оператор)
блин запамятовал как это делается пишут вместо стандартной формы что то типа y < x : x = m напомните плиз как это называется, какие там правила
Проверка валидности в libxml++ C++
Подскажите, как с помощью этой библиотеки можно проверить валидность документа на соответствие XML. Вариант через исключение при создании не годится, т.к. в этом случае libxml++ выводит в поток описание ошибки без моего ведома... Документацию читал, но разобраться не смог...
C++ ошибка компиляции Code::Blocks 12.11 http://www.cyberforum.ru/cpp-beginners/thread939528.html
Доброго времени суток. Установил Code::Blocks 12.11. до этого пользовалься десятой версией. проблема в том, что компиляция не проходит, если рядом с срр-файлом лежит ехе, скомпилиованный до этого. если его удалить - всё ок. если нет - пример на скриншоте. подскажите, как быть
C++ реализация класса в .h файле хорошо или плохо? все знакомые мне ide разделяют класс на два файла: .h с описанием и .cpp с кодом, но, например, в boost .hpp файлы почти всегда содержат и реализацию классов, т.е. так тоже можно. так в чем тогда разница и когда какой способ нужно применять? заранее благодарен подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
18.08.2013, 03:43     Полиморфизм и private методы
Care, Нет, не изменяет. Ведь, если мы создадим объект типа Two - мы не сможем вызвать данную функцию.
Здесь же вызывается по факту функция класса Abstract, но т.к. она виртуальная - вызывается переопределенная.
n3376 11.5/1
The access rules (Clause 11) for a virtual function are determined by its declaration and are not affected by
the rules for a function that later overrides it.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class B {
public:
virtual int f();
};
class D : public B {
private:
int f();
};
void f() {
D d;
B* pb = &d;
D* pd = &d;
pb->f(); // OK: B::f() is public,
// D::f() is invoked
pd->f(); // error: D::f() is private
}
n3376 11.5/2
Access is checked at the call point using the type of the expression used to denote the object for which the
member function is called. The access of the member function in the class in
which it was defined is in general not known.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru