virtual-functions

Po co nam funkcje wirtualne w C++?

Uczę się C++ i dopiero zaczynam korzystać z funkcji wirtualnych. Z tego, co czytałem (w książce i w Internecie), funkcje wir ... i wydaje się to ważne, więc chcę być jasne, co to dokładnie jest. Po prostu nie mogę znaleźć prostej odpowiedzi w Internecie.

Jaka jest różnica między funkcją abstrakcyjną a funkcją wirtualną?

Jaka jest różnica między funkcją abstrakcyjną a funkcją wirtualną? W jakich przypadkach zaleca się użycie wirtualnego czy abstrakcyjnego? Które podejście jest bardziej poprawne?

Wirtualne wywołanie członka w konstruktorze

Otrzymuję Ostrzeżenie od ReSharper o wywołaniu do Wirtualnego członka z mojego konstruktora obiektów. Dlaczego miałoby to być coś, czego nie można zrobić?

Jak zaimplementowane są funkcje wirtualne i vtable?

Wszyscy wiemy, jakie funkcje wirtualne są w C++, ale jak są one implementowane na głębokim poziomie? Czy vtable może być mod ... na szybkość, jeśli funkcja wirtualna jest faktycznie nadpisana, czy nie, czy nie ma to żadnego wpływu, o ile jest wirtualna.

Czy słowo kluczowe "override" jest tylko sprawdzeniem nadpisanej metody wirtualnej?

O ile dobrze rozumiem, wprowadzenie override słowa kluczowego w C++11 jest niczym więcej niż sprawdzeniem, aby upewnić się, że implementowana funkcja jest overrideing z virtual funkcji w klasie bazowej. To wszystko?

Funkcje wirtualne i wydajność-C++

W moim projektowaniu klas, używam klas abstrakcyjnych i funkcji wirtualnych szeroko. Miałem wrażenie, że funkcje wirtualne wp ... prawda? Ale myślę, że ta różnica wydajności nie jest zauważalna i wygląda na to, że robię przedwczesną optymalizację. Prawda?

Czy wbudowane funkcje wirtualne są naprawdę bezsensowne?

Dostałem takie pytanie, gdy otrzymałem komentarz do code review mówiący, że funkcje wirtualne nie muszą być wbudowane. Myśl ... iler would be this much intelligent! Temp* pTemp = &aDerivedObj; pTemp->myVirtualFunction(); return 0; }

Dlaczego metody interfejsu C# nie są deklarowane jako abstrakcyjne lub wirtualne?

Metody C# w interfejsach są deklarowane bez użycia słowa kluczowego virtual, A nadpisywane w klasie pochodnej bez użycia słow ... IL_0000: nop IL_0001: ret } // end of method Example::Dispose Zauważ, że metoda jest zadeklarowane virtual final w IL.

C++ "wirtualne" słowo kluczowe dla funkcji w klasach pochodnych. Czy to konieczne?

Z definicją struct podaną poniżej... struct A { virtual void hello() = 0; }; Podejście #1: struct B : public A { ... uct B : public A { void hello() { ... } }; Czy jest jakaś różnica między tymi dwoma sposobami nadpisania funkcji hello?

Czy można pisać wirtualne funkcje / metody w Javie?

Czy możliwe jest pisanie wirtualnych metod w Javie, tak jak w C++? Lub, czy istnieje odpowiednie podejście Java, które można zaimplementować, które wywołuje podobne zachowanie? Mogę prosić o jakieś przykłady?

Jaki jest koszt wykonania wirtualnej metody w klasie C++?

Posiadanie co najmniej jednej wirtualnej metody w klasie C++ (lub którejkolwiek z jej klas nadrzędnych) oznacza, że klasa będ ... ie z destruktorem, w każdej klasie i usuń ją tylko wtedy, gdy zajdzie taka potrzeba. Czy to brzmi dla Ciebie jak szaleństwo?

Jaki jest pierwszy (int (*)(...))0 wpis vtable na wyjściu g++ -fdump-class-hierarchy?

Dla tego kodu: class B1{ public: virtual void f1() {} }; class D : public B1 { public: void f1() {} }; int main ( ... tune=generic --build=x86_64-suse-linux Thread model: posix *gcc version 4.4.1 [gcc-4_4-branch revision 150839] (SUSE Linux)*

C++ virtual function return type

Czy jest możliwe, aby odziedziczona Klasa zaimplementowała funkcję wirtualną z innym typem zwracanym (nie używając szablonu jako zwracanego)?

Skąd się biorą awarie "pure virtual function call"?

Czasami zauważam programy, które zawieszają się na moim komputerze z błędem: "pure virtual function call". Jak te programy kompilują się, gdy obiekt nie może być utworzony z klasy abstrakcyjnej?

Dlaczego C# domyślnie implementuje metody jako nie-wirtualne?

W Przeciwieństwie Do Javy, dlaczego C# domyślnie traktuje metody jako funkcje nie-wirtualne? Czy bardziej prawdopodobne jest ... niejąca Architektura. Ale co ze skutkami ubocznymi? Czy to naprawdę dobry kompromis, aby mieć metody nie wirtualne domyślnie?

Bezpieczne zastępowanie funkcji wirtualnych C++

Mam klasę bazową z wirtualną funkcją i chcę nadpisać tę funkcję w klasie pochodnej. Czy istnieje jakiś sposób, aby kompilator ... innemu narzędziu, aby to za mnie sprawdził? Jakieś pomocne flagi kompilatora (najlepiej dla g++)? Jak unikasz tych problemów?

Dlaczego warto korzystać z funkcji wirtualnych? [duplikat]

to pytanie ma już odpowiedzi tutaj : ... żywamy funkcji wirtualnych? Czy ktoś może mi podać implementację w czasie rzeczywistym lub wykorzystanie funkcji wirtualnych?

Metody wirtualne lub Wskaźniki funkcji

Podczas implementacji zachowania polimorficznego w C++ można użyć czystej metody wirtualnej lub użyć wskaźników funkcji (lub ... Test"; } }; int main() { Callback<CallbackTest> test; test.go(); } Jakie są zalety i wady każdego wdrożenia?

Dlaczego warto używać wskaźników klasy bazowej dla klas pochodnych

class base{ ..... virtual void function1(); virtual void function2(); }; class derived::public base{ int fun ... inżynierem CompSci i chciałbym to wiedzieć. Po co używać funkcji wirtualnych, jeśli możemy uniknąć wskaźników klasy bazowej?

Zastąpienie publicznych funkcji wirtualnych funkcjami prywatnymi w C++

Czy Jest jakiś powód, aby uprawnienia nadpisanej funkcji wirtualnej C++ różniły się od klasy bazowej? Czy jest w tym jakieś ... m innych uprawnień dla metod wirtualnych w klasach pochodnych vs klasach bazowych? Czy jest ku temu jakiś uzasadniony powód?