Hello all

I have stupid question regarding constructors and destructors in c++. 
After compilation there are two assembler functions (__ZN4testC2Ev,
__ZN4testC1Ev)
that represent constructor, same is for destructors (__ZN4testD2Ev,
__ZN4testD1Ev). 
Functions are completely the same. 
What is the reason for such compilere behaviour? 

Here is small sample:

class test 
{
public:
        test();
        ~test();
};

test::test()
{

}
test::~test()
{
}

Here is output after objdump:

SYMBOL TABLE:
[  2](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 1) 0x00000000 __ZN4testC2Ev
[  4](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x00000006 __ZN4testC1Ev
[  5](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x0000000c __ZN4testD2Ev
[  6](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x00000012 __ZN4testD1Ev
....

Disassembly of section .text:

00000000 <__ZN4testC2Ev>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   5d                      pop    %ebp
   4:   c3                      ret    
   5:   90                      nop    

00000006 <__ZN4testC1Ev>:
   6:   55                      push   %ebp
   7:   89 e5                   mov    %esp,%ebp
   9:   5d                      pop    %ebp
   a:   c3                      ret    
   b:   90                      nop    

0000000c <__ZN4testD2Ev>:
   c:   55                      push   %ebp
   d:   89 e5                   mov    %esp,%ebp
   f:   5d                      pop    %ebp
  10:   c3                      ret    
  11:   90                      nop    

00000012 <__ZN4testD1Ev>:
  12:   55                      push   %ebp
  13:   89 e5                   mov    %esp,%ebp
  15:   5d                      pop    %ebp
  16:   c3                      ret     



 


Thanks in advanced
Mile

Reply via email to