Перебор массива полиморфных объектовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Перебор массива полиморфных объектов

Сообщение Anonymous »

Рассмотрим следующий код:

Код: Выделить всё

#include 

struct B {
char i;
B(char i) : i(i) {};
void bar() {};
};

struct D : B {
int y;
D(char i, int y) : B(i), y(y) {};
};

void foo(B *arr, size_t size)
{
for(B *end = arr + size; arr < end; ++arr) {
std::cout i При переборе массива, производного по указателю на базу в полиморфном контексте, какое смещение будет использоваться по стандарту?
[/list]
I просмотрел стандарт и не нашел никаких упоминаний об информации времени выполнения, влияющей на смещения.
[expr.add] на самом деле не проясняет этот вопрос. Технически это означает, что результирующий указатель должен указывать на элемент массива.
Для меня становится очень странно, когда я печатаю команду foo:
[code]#include 

struct B {
char i;
B(char i) : i(i) {};
virtual void foo() { std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78546477/iterating-over-array-of-polymorphic-objects[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»