Don't bother.
Try to make a less trivial program and you will discover the size is not that different, until your code will start to become various hundreds of kilobytes.
Briefly: There are part of the standard library that constitute the "infrastructure" between the OS modules and the C++ semantics that manage the startup and termination of the program (all that initialize and destroy the global variables, the standard input and output etc.)
Plus: everything that maps the C++ symbols towards the memory addresses, (if you didn't require to remove it - try the -O3 -s and eliminate the -g options) so that a debugger can show the proper source code references across the execution.
Also: because of the way the memory is laid out, a binary is normally made up by chunk of fixed size. Your program may even be shorter, but at least one code segment, one data segment initializer and one shared segment (for constant values) must be present.
answered 2012-07-30T16:43:30.157