Content shadowing happens when an inner variable hides an outer variable and code uses the inner name by mistake. The result may be a typo that compiles but produces the wrong behavior. section 9.1
A setter that changes nothing
In Circle, the parameter rad, member rad, and global rad share a name. The statement rad = rad assigns the parameter to itself, while sum() adds the member twice instead of combining member and global state. Use clearer names or explicit qualification, such as this->radius and global::radius.
