枠-1
1.値渡し void foo(RECT rc); 2a.ポインタ渡し void foo(RECT* rc); 3a.参照渡し void foo(RECT& rc);
枠-2
2b.constポインタ渡し void foo(const RECT* rc); 3b.const参照渡し void foo(const RECT& rc);
枠-3
NULLを渡し得る場合は、ポインタ渡し(2b.)を用いる。 アドレスがNULLである実体を絶対に渡さないことが、わかっているのならば、参照渡し(2c.)を用いる。
枠-4
LPRECT rc = NULL; foo(*rc); // foo(const RECT&)の呼び出し
枠-5
void foo(const RECT&rc){ if (&rc == NULL) return; // NULLオブジェクトなので返る }