Iterieren über ein Array polymorpher ObjekteC++

Programme in C++. Entwicklerforum
Guest
 Iterieren über ein Array polymorpher Objekte

Post by Guest »

Bedenken Sie den folgenden Code:

Code: Select all

#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 Welcher Offset wird gemäß dem Standard verwendet, wenn über ein Array abgeleiteter Elemente über einen Zeiger auf eine Basis in einem polymorphen Kontext iteriert wird?
[/list]
I Ich habe den Standard durchgesehen und keine Erwähnung von Laufzeitinformationen gefunden, die sich auf die auswirken Offsets.
[expr.add] klärt die Sache nicht wirklich. Technisch gesehen heißt es, dass der resultierende Zeiger auf das Element eines Arrays zeigen soll.
Es wird für mich wirklich seltsam, wenn ich den foo print:
[code]#include 

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post