fork download
  1. #include <stdio.h>
  2.  
  3. class Double
  4. {
  5. public:
  6. };
  7. class Float
  8. {
  9. public:
  10. operator Double(){ printf( "Float to Double\n" ); return Double(); }
  11. };
  12.  
  13. Double operator +( Double left, Double right ){ printf( "::operator+(Double,Double)\n" ); return Double(); }
  14.  
  15.  
  16. int main( void )
  17. {
  18. Double d;
  19. Float f;
  20.  
  21. printf( "[0]\n" );
  22. f + f;
  23.  
  24. printf( "[1]\n" );
  25. d + d;
  26.  
  27. printf( "[2]\n" );
  28. d + f; // fはDoubleへ暗黙の型変換が発生する。
  29.  
  30. printf( "[3]\n" );
  31. f + d; // fはDoubleへ暗黙の型変換が発生する。
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
[0]
Float to Double
Float to Double
::operator+(Double,Double)
[1]
::operator+(Double,Double)
[2]
Float to Double
::operator+(Double,Double)
[3]
Float to Double
::operator+(Double,Double)