為什麼C 中virtual要翻譯為虛函式?

時間 2021-05-05 20:05:56

1樓:avoidant

這個問題我研究過,容我慢慢說。

第一點,virtual的翻譯問題。

把virtual翻譯成「虛」沒有什麼問題,但你要注意,「虛」是「虛擬」一詞按照漢語習慣進行的縮寫。千萬別把它當成「空虛」的縮寫,從而跟「實」相對。

「虛擬」,擬的就是「實」。所以「虛擬」應當理解為一種無比接近「實」的東西。

這種理解也是英文virtual的原意「You can use virtual to indicate that something is so nearly true that for most purposes it can be regarded as true.」

它的重點在「擬」而非「虛」上。

所以virtual翻譯為「擬實」更確切,而不是「虛擬」,更不是從「虛擬」進一步縮寫得到的「虛」。

「擬實」是極為接近「實」的,而「虛」跟「實」是相反的。

第二點,virtual一詞的來歷問題。

大多數人可能都以為virtual出自c++,但它其實出自SIMULA。這是個對c++之父影響極大的語言。

在SIMULA中,virtual是用來描述非嚴格繼承關係的。所謂非嚴格繼承就是我們熟悉的那種繼承,即派生類通過虛函式可以改寫基類宣告的函式的那種繼承(如果不能,就是嚴格繼承)。這種非嚴格繼承,就很「擬」嚴格繼承,所以SIMULA用了virtual(擬實)這個詞。

第三點,名字沒有那麼好起。

第一次往往起不好,後邊也就懶得改了(特別是已經告訴他人之後)。

SIMULA選擇virtual這個詞刻畫非嚴格繼承關係,這個名字就起的不怎麼好。

作為碼農,大家重構時,給類改名字恐怕是個主要活動吧。

換個貼切的名字,你會發現很多地方都順暢了。乙個好名字,只有在真正把握了這個東西的本質之後才能起出來。

我給想了個名字:用varied代替virtual。

大家覺得如何?

2樓:pansz

因為這個函式雖然在那裡,但使用者實際呼叫的時候,就可能呼叫的不是它而是子類的函式,就好像它不存在似的。

所以翻譯成虛函式沒毛病。

為什麼使用virtual關鍵字在C 與C 會出現不同的效果?求解答。

來自 Essential C 2.0 In C methods called during construction will not dispatch the virtual method.Instead,during construction,the type is associated wit...

C和C ,為什麼要分得那麼清?

愛資病得治 說cin和cout是庫函式的你夠了,看來你是c和c 都沒學好,我堅持認為c和c 是完全兩種不同的語言。雖然有些高校老師c 是帶類的c這完全是錯誤的實際上c有的c 沒有 題主你用的不叫C 你用的叫C with Class。C 特別是11之後高階特性有很多,包括lambda,右值引用,可變模...

為什麼要定義C1 C2函式?

格式化 說愁客 這就是對函式光滑性的一種描述,題目裡給出這些條件條件有的時候是為了提示你要使用這個函式的導數來解題,有的時候是告訴你這個題目中不允許使用比他給你的更高階的導數了。 資冶通籤 C1 C2函式有什麼優良的性質,翻一翻數學分析的教材就知道了。函式單調性 凹凸性 極點等等與一階導數 二階導數...