Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
yekka
386 / 150 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 19:58

Тонкость с указателями - взятие указателя на базовый класс - C++

14.12.2012, 19:58. Просмотров 460. Ответов 7
Метки (Все метки)

очевидно, что при множественном наследовании два объекта-предка не могут иметь один и тот же адрес, поэтому для преобразования указателя на дочерний объект к указателю на второй родительский объект (и обратно) к указателю необходимо будет добавить некоторое смещение.

Вообще, сишное приведение типов сначала пытается применить static_cast, а если не получается, то использует reinterpret_cast. В твоем случае, очевидно, достаточно static_cast'а, поэтому преобразование будет "умным" (т.е. с добавлением нужного смещения при необходимости). А если явно запросить reinterpret_cast, то смещение добавлено не будет и в общем случае получим нерабочий указатель.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 19:58
Темы с ответами и решениями для C++ Тонкость с указателями - взятие указателя на базовый класс:

Класс: как обратиться к методу производного класса через итератор на базовый класс?
Есть абстрактный и два порожденных. Хочу создать например list<Base*> list1;...

Создать базовый класс - Array и производный класс - Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный...

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка),...

Класс: Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра.
Создать абстрактный базовый класс Figure с виртуальными методами вычисления...

0
Тонкость с указателями - взятие указателя на базовый класс C++   Следующее сообщение темы 
Другие темы раздела
C++ map<string, string>define_map http://www.cyberforum.ru/cpp-beginners/thread730677.html
нужно имитировать работу препроцессора #define у нас есть файл из которого считали программу на С++. list<string> word_list; list<string>::iterator i; string str; //заполняю word_list...
C++ не работает функция-счётчик Функция должна возвращать целое значение, уменьшающееся на 1 при каждом вызове. Начальное значение равно 10 #include "stdafx.h" int main() { static int a=10; a--; printf("%d \n",a); return... http://www.cyberforum.ru/cpp-beginners/thread730676.html
Минимальное дерево-остов C++
Ребят, помогите пожалуйста решить задачу в BC++ )) На плоскости своими координатами заданно n точек. Построить связный граф с вершинами во всех этих точках так, чтобы суммарная длина его ребер была...
C++ как переделать программу?
компилятор выдает много ошибок, как исправить ума не приложу. может быть что то нужно переделать? подскажите #include <stdlib.h> #include <conio.h> #include <math.h> void main() { double ...
C++ буквенная матрица в С++ http://www.cyberforum.ru/cpp-beginners/thread730634.html
помогите пожалуйста не могу сделать нужно создать буквенную матрицу при нажатии любой клавиши где i=j выводит букву О,i>j выводит-N,i<j выводит -Z, и при нажатии другой значения инвертируются : i>j...
C++ Двумерный массив с указателем (Преобразовать матрицу по правилу) Здравствуйте. Помогите пожалуйста. Задание: Дана действительная квадратная матрица порядка n. Преобразовать матрицу по правилу: строку с номером n сделать столбцом с номером n, а столбец с номером... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru