编译器优化问题
#include <cstdio>
class B {
public:
B( ) { print_this(); printf( "default constructor\n" ); }
~B( ) { print_this(); printf( "destructor\n" ); }
B( int i ) : data( i ) {
print_this(); printf("constructed by parameter%d\n", data );
}
B( const B& b ) { data = b.data; print_this(); printf( "copy constructor\n" ); }
B& operator= ( const B& b ) {
if( this != &b ) {
data = b.data;
print_this();
printf( "copy assignment\n" );
}
return *this;
}
void print_this( ) {
printf( "0x%08x\n", this );
}
private:
int data;
};
B Play( B b )
{
b.print_this( );
return b;
}
int main( )
{
B tmp = Play(5);
}
对输出结果不太明白,编译器是怎么优化的?