cost 233 ms
有沒有類似虛函數比較少的設計?

[英]Is there a design with fewer similar virtual functions?

這個問題是從 Software Engineering Stack Exchange 遷移而來的,因為它可以在 Stack Overflow 上得到解答。 昨天遷移。 我正在使用使用模板的 Eigen Tensor 庫編寫一個庫。 有一個名為 Layer 的基類 class,許多類都從中繼承。 每 ...

調用僅在 base 中實現但未派生的 function 時如何警告(或錯誤)?

[英]How to warn (or error) when calling a function that is only implemented in base but not derived?

我真的不確定如何簡要地給這個問題命名。 情況: 在 C++20 中。 有一個Base作為接口,它指定了我們擁有的所有特性(成員函數)。 還有多個派生類可以實現功能的子集。 這些函數是虛函數。 還有一些函數在所有派生類中都是相同的。 可以有重載的成員函數。 我們可以使用 SFINAE 或概念靜態檢查 ...

C++中,虛擬function返回類型的header文件是否必須包含在class聲明中?

[英]In C++, do the header files of virtual function return types have to be included in the class declaration?

考慮以下代碼: 是否必須包含 Type_A 和 Type_B 的 header 文件,或者轉發聲明這些類型是否安全? 請注意,copied_ta() 和 copied_tb() 函數返回的是對象,而不是指向對象的指針。 謝謝。 ...

修改派生類中的函數並通過派生類對象本身訪問它是運行時多態性的一個例子

[英]Is modifying a function in derived class and accessing it by derived class object itself an example of runtime polymorphism

我正在網上閱讀有關函數覆蓋和運行時多態性的信息。 在閱讀時,我發現了一個在programiz上覆蓋函數的示例,其中給出了以下示例: 輸出 在Derived類中,我們修改了Base類的print()函數,並由派生類的對象derived1訪問。 一個問題一直縈繞在我的腦海中——這也是運行時多態性的一個例 ...

C++ 中虛擬模板方法的替代方法

[英]Alternative to virtual template methods in C++

假設您有一個抽象模板 class IParser ,它有一個名為parse的虛方法,該方法應該解析一個字符串並返回一個 object 模板類型。 您有另一個抽象 class INetlinkAdapter表示用於 Netlink 通信的適配器,它提供了一個虛擬方法來發送請求並使用IParser解析其 ...

如何使用來自 C++ 中基本方法的不同輸入集的派生函數的虛函數?

[英]How to use virtual functions of derived functions with different set of inputs from a base method in C++?

我有一個 base class A,它可以做一些初步的工作。 有 2 個子類 B 和 C,它們的行為彼此略有不同。 A 中有一個 function 說foo ,這對於 B 和 C 幾乎相同,除了一小步,它涉及 function 對bar的調用。 bar在 A 中是虛擬的,在 B 和 C 中有定 ...

具有虛擬成員函數的對象是否應該始終在堆上實例化?

[英]Should objects with virtual member functions always be instantiated on the heap?

據我了解,具有虛擬成員函數的具體類型D的對象應該通過指向其(可能是抽象的)基類 class B的指針來使用。 否則,將功能虛擬化是沒有意義的。 有三個重要的“指針選項”: 指向B的原始指針指向堆棧上類型D的 object。 指向B的原始指針指向堆上類型D的 object。 擁有指向B的智能指針(唯 ...

未定義時使用printf作為虛擬function

[英]Using printf as a virtual function when it is not defined

我正在使用來自 mbed 的 LCD 庫,稱為 TextLCD,並希望對其進行修改,以便它可以充當接口 LCD Class 的具體 class。 在TextLCD驅動中,在.hpp中聲明了一個printf()方法: 但是,它沒有在 cpp 文件中定義。 然而,以某種方式調用TextLCD::pri ...

重新定義虛擬 function 調用

[英]Redefined virtual function call

考慮: 這是我的代碼。 為什么我已經在Derived class中重新定義了Base::foo(),為什么我可以調用Derived class中的Base::foo。為什么編譯器在重新定義后不刪除class Derived中的Base::foo? ...

實現返回 *this(協變返回類型)的“虛擬”方法

[英]Implementing a "virtual" method returning *this (covariant return type)

我正在編寫 C++ 類的層次結構,假設A , B繼承A , C繼承A , D繼承B 。 現在,所有這些類都必須有一個方法bar() & ,其主體是:{ A::foo(); return *this; } 這是完全相同的代碼,做完全相同的事情——除了返回值的類型——它返回一個 ...

成員方法調用同名但不同簽名的虛方法

[英]Member method calls virtual method with same name but different signature

我有以下頭文件/源文件: 至關重要的是, func的“后備”版本與虛擬 function 具有相同的名稱,但簽名不同,而func的單簽名版本將在子 class Foo中指定。 test_foo1無法編譯: 如果我在foo.h中激活注釋的聲明行,它會編譯,但在另一個源文件中調用test_foo1時將 ...

如何調試基礎 class 的 vtable 中缺少的函數

[英]How to debug missing functions in vtable of base class

通過使用以下結構的對象(一些位簡化): 在某些情況下,會引發段錯誤。 據我了解,這種結構應該是足夠的,但在我嘗試過的示例中( here ),它引發了段錯誤,我似乎無法深入了解它。 在代碼中,當我檢查 2 個符號的 vtable 時,我發現以下差異:150 solver->solve({1. ...

C++ 覆蓋沒有虛擬的說明符? 覆蓋是否意味着虛擬?

[英]C++ override specifier without virtual? Does override imply virtual?

鏈接的問題不一樣 - 甚至沒有提到override 編輯:新的重復列表包含一個合法的重復,我沒有從搜索中找到。 在問這個問題之前,我不知道在派生的 class 成員中是否使用virtual的選擇對於某些人來說將是一個有爭議的問題。 我剛剛遇到了一些如下所示的源代碼: 我不確定如何解釋這一點,即使在 ...

ARM 程序集中的.word 0 是什么意思?

[英]What does .word 0 mean in ARM assembly?

我正在為 Cortex-M4 編寫 C++ state 機器。 我使用ARM GCC 11.2.1 (none) 。 我在 C 和 C++ output 組件之間進行比較。 我有以下 C++ 代碼神螺栓鏈接 總成 output 是: 與此代碼的 C 版本的唯一區別是 2 行.word 0 : 這是 ...

2 關於克隆方法的問題

[英]2 Questions about clone method

我在這里有兩個問題。 是否需要在派生的class中添加virtual關鍵字? 在Derived::clone()方法中返回Derived class 或Base class 的指針有什么區別嗎?class Base { virtual Base* clone() const = 0; }; ...

多個 inheritance:第一鹼基 class 依賴於 function 在第二鹼基 ZA2F2ED4F8EBC4061D

[英]Muiltple inheritance: first base class dependent on function in the second base class

我有很多不同的子類(15+),它們都在其中定義了相同的 function centerAt 。 這些子類每個都繼承了 extern 庫中的不同類:它們的共同點是它們具有setPos所依賴的 function setPos。 我的目標是避免代碼重復,因此我想出了一個解決方案,將 centerAt 移 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM