C++中的僞虛函數是什麼?什麼是C++中的僞虛函數?
回答
AFAIK它不是一個在官方定義的任何地方出現的術語。可能有人在說simulated dynamic binding?
編輯:一個迅速的網絡搜索表明有人可能已經實現了自己的動態多態,所以他們可能有自己的vtable。然後,「僞虛擬」函數將是通過其機制訪問的函數,而不是像C++編譯器理解的那樣實際上是虛擬函數。
這樣做的一個原因是實施multi-dispatch。
您有任何可以指出我們的情況嗎?
是的,它似乎與模擬動態綁定有關。上下文是一種優化多線程動畫和在3d引擎上構建變形系統的機制,因此它很有意義。非常感謝。 – 2009-08-23 02:53:22
帶聲明的虛擬函數。
class Foo
{
int* bar;
Foo() : bar(0) { bar = new int; }
virtual ~Foo() { delete bar; }
}
這有一個僞虛擬析構函數,因爲它在聲明中做了一些事情。這是一個純粹的虛擬聲明:
class Foo
{
Foo() { }
virtual ~Foo()=0;
}
至少,我這是怎麼學的。
我聽到這個術語來使用,是指多方法(在C++這些通常使用函數指針陣列,其中所述選擇器偏移由代碼在運行時確定實現):
(*multiMethod[ index ])()
的多重方法陣列只是一個函數指針數組。
我從來沒有聽說過這個詞。我猜他們或者在談論Non-Virtual Interface idiom (NVI),或者他們正在討論如何構建一個函數指針的調度表,這是如何在C中實現多態/虛函數的(實際上是C++編譯器如何在後臺執行它)。
當我讀到這個問題時,NVI是我想到的第一件事情.... – Dan 2009-08-22 15:47:03
- 1. 爲什麼C++中的虛函數稱爲「虛擬」?
- 2. 僞隨機數發生器中的狀態函數是什麼?
- 3. 什麼是虛函數查找規則?
- 4. 「= 0;」是什麼在C++中聲明純虛函數時做什麼?
- 5. C++中的映射函數是什麼?
- 6. C# - 爲什麼虛擬函數不能覆蓋抽象函數?
- 7. 在PHP中,C++的虛函數等價於什麼?
- 8. 在純虛函數的衰減中,「= 0」是什麼意思?
- 9. 什麼是SQL「僞列」?
- 10. 虛擬函數C#
- 11. 虛擬函數C++
- 12. 爲什麼`boost :: multi_array_ref`的析構函數是非虛擬的?
- 13. 爲什麼QWidget的析構函數不是虛擬的?
- 14. 什麼時候在C++中使用虛函數而不是重寫是最有利的,反之亦然C++
- 15. malloc()和虛函數有什麼問題?
- 16. C/C++:頭文件中的靜態函數,是什麼意思?
- 17. 什麼是DialogResult函數visual C++ 2010?
- 18. 這個C++函數是什麼意思?
- 19. 使用虛函數的C++
- 20. C++虛函數的實現?
- 21. 是什麼僞代碼的意思是 - 二叉搜索樹後繼函數
- 22. 什麼是「類* CLS」在C++中的函數定義是什麼意思?
- 23. 什麼是C++中的轉換構造函數?它是爲了什麼?
- 24. 鏈接時未定義C++虛函數 - 爲什麼?
- 25. C++中的虛函數的概念
- 26. 在C++中,2D數組的增量是什麼?函數聲明(0)做什麼?
- 27. 爲什麼C中的getchar()函數是一個整數?
- 28. 這個C qsort函數調用中的參數是什麼?
- 29. 什麼是C++構造函數中的大括號參數11
- 30. 爲什麼C++編譯器(gcc)認爲函數是「虛擬」字段?
上下文是一種優化多線程動畫並在3d引擎上構建變形系統的機制。 – 2009-08-23 02:53:52