Type Safety
Team LiB
Previous Section Next Section

Type Safety

Trying to outsmart a compiler defeats much of the purpose of using one.

Brian Kernighan & P.J. Plauger

If you lie to the compiler, it will get its revenge.

Henry Spencer

There will always be things we wish to say in our programs that in all known languages can only be said poorly.

Alan Perlis

Last, but certainly not least, we will consider type correctnessa very important property of a program that you should strive to preserve at all times. Theoretically, a type-correct function can never access untyped memory or return forged values. Practically, if your code maintains type soundness, it avoids a large category of nasty errors ranging from nonportability to corrupting memory to creating bogus values to exhibiting undefined behavior.

The basic idea underpinning how to maintain type soundness is to always read bits in the format in which they were written. Sometimes, C++ makes it easy to break this rule, and the following Items detail how to avoid such mistakes.

Our vote for the most valuable Item in this section goes to Item 91: Rely on types, not on representations. The type system is your friend and your staunchest ally; enlist its help, and try never to abuse its trust.


    Team LiB
    Previous Section Next Section