Effective C++ 第三十六條 Never redefine an inherited non-virtual fun

絕不重新定義繼承而來(lái)的 non-virtual 函數(shù) .
假設(shè)當(dāng)前有一個(gè) base ,base 有函數(shù) non-virtual ?型的 fun,而 derived 繼承 base,也定義一個(gè) fun?,F(xiàn)遇到如下情況:
上述這個(gè)例子說(shuō)明了如果 derived 重載 base 的 non-virtual 函數(shù)會(huì)導(dǎo)致歧義。non-virtual 函數(shù)是靜態(tài)綁定的,virtual 函數(shù)是動(dòng)態(tài)綁定的。在這里就說(shuō)明,對(duì)象的行為在靜態(tài)綁定下表現(xiàn)并不在于對(duì)象(b、d)本身,而在于其聲明類(lèi)型(base、derived),也就是說(shuō)哪怕你的對(duì)象是 derived,如果我用 base 型指針指向你,你就是 base ,我說(shuō)你是誰(shuí)你就是誰(shuí)。而動(dòng)態(tài)綁定對(duì)象表現(xiàn)取決于其本身,而不在于其聲明類(lèi)型,x 是 derived,不論用 base 還是 derived 型指針,結(jié)構(gòu)都是 derived 的 fun,也就是說(shuō)你是誰(shuí)就是誰(shuí),跟我怎么說(shuō)你沒(méi)關(guān)系。