Gast
#411266
hallo,
beim kompilieren mit avr-c++ und überprüfen bin ich darüber gestolpert,
dass für virtuelle destruktoren zwei symbole erstellt werden. ein
kleines beispiel:
#include <stdio.h>
extern "C" {
void __cxa_pure_virtual()
{
}
}
class B {
public:
B(int __i) : _b(__i){}
virtual ~B(){
}
int _b;
virtual int get(){
return _b;
}
void operator delete(void*){
}
};
class C {
public:
C() : _b(B(1)){}
B _b;
};
int
main(int argc, char** args)
{
C _c;
printf("class c with id: %d \n",_c._b.get());
}
avr-nm output
[..]
0000008a 0000004c W B::B(int)
00000132 00000044 W B::~B()
00000176 00000044 W B::~B()
[..]
avr-c++ -v:
gcc version 4.1.1
Hat jemand eine idee, warum das so ist, und wie sich das abstellen
lässt? Ist der Destruktor nicht virtuell, gibt es nur ein symbol
dafür.
Vielen Dank im voraus,
bye kosmo