Hallo,
ich bin heute über etwas gestolpert, von dem ich felsenfest überzeugt war, das es funktioniert.
Es geht hier um folgendes Konstrukt, die Erklärung folgt danach.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
class foo
{
public:
foo() : x(0)
{}
virtual ~foo() {}
private:
int x;
};
class bar : public foo
{
public:
bar(int param) : y(param), foo()
{}
int getY() { return y; }
private:
int y;
};
int main()
{
foo *pFirst(new bar(5));
foo *pSec(new bar(1));
*pSec = *pFirst;
std::cout << dynamic_cast<bar*>(pSec)->getY() << std::endl; // gibt 1 aus obwohl ich 5 erwartet hätte
system("pause");
}
|
Wie man sieht, erbt bar von foo. Ich erstelle mir also 2 bar Objecte, die ich in foo Pointer packe und versuche über eine Dereferenzierung pSec auf den Wert von pFirst zu setzen. Wie man aber ganz gut sieht, funktioniert das nicht. Und genau HIER würde mich interessieren, wieso...
Wie gesagt, bisher war ich der Meinung, das sowas funktionieren müsste, wurde aber eines besseren belehrt.
mfg
PS: Ich weiß das es ein MemoryLeak gibt