Re: no see copy-constructor in output of nm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Shriramana Sharma wrote:

> class Integer
> {
> public :
> 	Integer ( int i ) : i_ ( i ) {}
> private :
> 	int i_ ;
> } ;
> int main ( void )
> {
> 	Integer a ( 1 ) ;
> 	Integer c ( a ) ;
> }
> 
> I do: g++ -c and then run nm -C on the object file. I get only:
> 
> 00000000 W Integer::Integer(int)
>           U __gxx_personality_v0
> 00000000 T main
> 
> Why do I not see the signature of the copy constructor 
> Integer::Integer(const Integer&) in the symbols list even though it is 
> automatically created?

Because it's inlined. The default copy constructor just copies the raw
data.

> Also, why do I not see i_, a and c and the name of the class Integer 
> itself? Are they not also symbols?

a and c are automatic variables, which are created on the stack
whenever the function is called and destroyed when it returns. They
don't exist within the executable.

i_ is a structure field; it doesn't have an existence separate from
the object to which it belongs.

-- 
Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx>
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux