virtual-method

    1熱度

    1回答

    我有一個基類Base有很多純虛方法,我想定義幾個類的形式class Foo: public Base和類似class Bar,class Baz等 - 所有這些都應該是非虛擬的,並且所有這些都在.cpp文件中實現其虛擬方法,而不是在類定義中內聯。目前,在這些類別的每個定義中,我聲明瞭void method1() override,void method2() override等等,並且我必須複製粘

    1熱度

    1回答

    的虛方法,我有以下設置: class Parent { virtual void foo(int x) = 0; }; class Son : public Parent { void foo(int x) {}; }; class Daughter : public Parent { virtual void foo(int x) {}; }; 如果我

    4熱度

    2回答

    我一直在閱讀虛擬方法以及它們是如何被調用的。正如所討論的here和here,我已經得出結論,他們不應該真的如此不同。 C#編譯器發出IL代碼,該代碼通過call IL指令調用靜態方法,並通過callvirt調用虛擬/非虛擬成員。看起來JIT的工作實際上是確定被調用的方法對象是否實際爲空。所以這兩項檢查都是一樣的。另外,正如在第一篇文章中討論的那樣,在編譯時,看起來vtables或者表格保存着方法定

    3熱度

    1回答

    據我所知,虛擬方法調用是晚期綁定,因此不能由編譯器內聯。顯然,nvcc嚴重依賴內聯代碼。我想知道如果在Cuda的內核中使用虛擬方法會有什麼嚴重的缺點。有什麼情況應該避免它們?他們能對性能產生影響嗎?

    0熱度

    1回答

    在處理Arduino庫時,我遇到了一個有趣的編譯問題。所有類中的所有虛擬方法都會被編譯...始終。即使課程從未構建或甚至提及。 例Arduino的代碼再現此問題: class BaseClass { virtual void method(); }; void BaseClass::method() { Serial.println("This should not be

    0熱度

    3回答

    以下代碼給我一個錯誤。 Error: overriding 'virtual void Animal::getClass()', where it says virtual void getClass() { cout << "I'm an animal" << endl; } Error: conflicting return type specified for 'virtual int Do

    12熱度

    3回答

    我很好奇Expression.Compile與代碼和直接方法使用中的lambda表達式的對比,以及直接方法調用與虛擬方法調用(僞代碼): var foo = new Foo(); var iFoo = (IFoo)foo; foo.Bar(); iFoo.Bar(); (() => foo.Bar())(); (() => iFoo.Bar())(); Expression.Comp

    0熱度

    1回答

    我正在一個異常類,簡單地報告了cout問題,退出程序,就像這樣: class Exception { protected: short code; string text; public: friend ostream& operator <<(ostream& out, const Exception& p_exception) { return o

    0熱度

    1回答

    比方說,我有類動物和狗(狗繼承動物)。對於每個班級,我有一個具有相同簽名的方法(受保護)foo。這些方法應該是常規方法,非虛擬方法。但是由於PHP現在使所有非私有方法變爲虛擬,所以我有一個問題。 在我開始編寫一些解決方法之前,可能會以更簡單的方式解決問題。即: 是否有可能在PHP中將方法標記爲非虛擬? 「坐」內給定類(動物或狗)是它可以調用foo在當前類的背景下,這樣的虛擬結構不會踢?

    3熱度

    2回答

    我正在試驗一些C++遺留代碼。特別是,我有一個類層次結構,例如A < B < C(即,A是B的子類,並且B是C的子類),並且存在全局引用到類型爲C的對象,該對象從全局系統的代碼(單例模式)。目標是用一些僞造的對象替換那個對象(實際上,C用於訪問數據庫)。 我的第一次嘗試是引入接口IA, IB, and IC(其中包含相應類的功能的純虛擬版本),讓每個類實現其接口,並將全局參考的類型更改爲IC。在我