Свързани въпроси 'virtual-functions'

Идиом на виртуален конструктор - добродетелен или пълна абсолютна заблуда
Едно от златните правила в C++ е, че животът на един екземпляр започва, когато неговият конструктор завърши успешно и завършва, когато започне неговият деструктор. От това правило заключаваме, че НЕ е добра идея да се извикват виртуални методи в...
782 изгледи

Използване на силата на виртуалните функции
Разгледайте следния примерен код: class Base { public: void f(); virtual void vf(); }; class Derived : public Base { public: void f(); void vf(); }; #include <iostream> using namespace std; void Base::f() { cout...
203 изгледи
schedule 15.11.2023

Не може да се замени to_String поради цяло число в C++
Имам клас Служител, който има няколко подкласа. Искам да отменя функцията to_String в моя суперклас и всички подкласове, но не мога да я накарам да работи поради цяло число в суперкласа: class Employee{ public: Employee(...){ ......
169 изгледи
schedule 11.12.2022

c++ виртуална функция срещу указател на членска функция (сравнение на производителността)
Извикванията на виртуални функции могат да бъдат бавни поради виртуалните извиквания, изискващи допълнително индексирано уважение към v-таблицата, което може да доведе до пропуск на кеш данни, както и пропуск на кеш на инструкции... Не е добре за...
2852 изгледи

Как да си обясня това поведение с претоварени и заменени методи?
Може ли някой да бъде толкова мил и да ми обясни защо този код показва Derived.DoWork(double) . Мога да намеря някои обяснения за това поведение, но искам някой да ми изясни това. using System; public class Base { public virtual void...
260 изгледи
schedule 13.10.2022

C++ наследява шаблонен клас
Имам една странна молба, надявам се, че не е твърде пресилена и може да бъде изпълнена. Имам шаблонен клас template<class T> class Packable { public: // Packs a <class T> into a Packet (Packet << T)...
140 изгледи

Защо се изисква виртуална таблица само в случай на виртуални функции?
От http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ , код като напр class Base { public: virtual void function1() {}; virtual void function2() {}; }; class D1: public Base { public: virtual void function1() {}; }; class...
481 изгледи
schedule 18.12.2023

Как се реализират чисти виртуални методи в Python?
Все още не съм открил как. Междувременно в момента използвам така: @abc.abstractmethod def pure_virtual_method(self, a, b): """ Method description. :param a: Whatever... :param b: Whatever... :returns: Whatever......
210 изгледи
schedule 13.12.2022

Нуждаете се от пояснение относно виртуалните функции и частните членове на класа
В C++, ако публичната виртуална функция на базовия клас има препратка към частно членско поле и производният клас не отменя този метод, тогава тази препратка ще сочи ли частен член на производния клас
113 изгледи
schedule 16.01.2024

C++ Извикване на виртуален метод в Constructor
Използвам родителски клас, който има някои виртуални методи. Когато извикам виртуалния метод в конструктора, той дава LNK2019 и LNK1120 грешки със съобщения " error LNK2019: unresolved external symbol "protected: virtual int ... referenced in...
1075 изгледи
schedule 19.03.2024