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

Доступ к приватному методу наследника через родителя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Каким образом в переменную записывается результат каждого рекурсивного вызова? http://www.cyberforum.ru/cpp-beginners/thread1101839.html
Всем привет! Подскажите по данной задачи, немного недопонимаю: ФАКТОРИАЛ: int FACT(int n) {int res; if(n==1) return 1; res=n*FACT(n-1); return(res); } Почему когда я вместо return 1...
C++ После легкой модификации кода он перестал компилироваться Здравствуйте,у меня такая вот проблема: есть готовый проект в CodeBlocks,нужно лишь изменить одну строчку в тексте программы. Пробовал сам,но при сборке выдает следующие ошибки: mingw32-g++.exe... http://www.cyberforum.ru/cpp-beginners/thread1101838.html
Определить, сколько среди чисел четных и сколько нечетных C++
2.Вводится последовательность целых чисел, 0 – конец последовательности. Сколько среди них четных чисел и сколько нечетных.
C++ Передача динамической матрицы в функцию
Здравствуйте подскажите пожалуйста, как можно передать динамическую матрицу, заданную и инициализированную следующим образом cout<<"Введите A --> "; cin>>A; cout<<"Введите B --> "; cin>>B;...
C++ Вывести текст на экран, меняя местами каждые два соседних слова http://www.cyberforum.ru/cpp-beginners/thread1101806.html
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
C++ Переделать через указатели #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void main() { int sum = 0, temp = 0, n; { cout<<"n= "; cin>>n; } подробнее

Показать сообщение отдельно
ValeryS
Модератор
6631 / 5039 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
21.02.2014, 09:50
Цитата Сообщение от stikkas Посмотреть сообщение
Вопрос в том, что получается С++ допускает возможность вызова закрытого метода потомка через указатель на базовый класс.
да
если посмотришь на дизасемблированый код
то увидишь две таблицы виртуальных функций для класса A и для B
что то типа
Assembler
1
2
;A
offset  f_a;
Assembler
1
2
;B 
offset f_b;
имена я придумал свои, у каждого компилятора свое искажение имен
так в результате
Цитата Сообщение от stikkas Посмотреть сообщение
C++
1
2
A *a = new B();
   a->f();
идет обращение к таблице B
и вызывается f_b
и все в порядке на уровне исполнения
а уровень доступа это на этапе компиляции, в исполняемом коде уже нет ни publiс ни private

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