Pytania otagowane jako virtual-functions

W programowaniu obiektowym funkcja wirtualna lub metoda wirtualna to funkcja lub metoda, której zachowanie można przesłonić w klasie dziedziczącej przez funkcję o tej samej sygnaturze. Ta koncepcja jest bardzo ważną częścią części polimorfizmu programowania obiektowego (OOP).


25
Dlaczego potrzebujemy funkcji wirtualnych w C ++?
Uczę się C ++ i dopiero zaczynam korzystać z funkcji wirtualnych. Z tego, co przeczytałem (w książce i online), funkcje wirtualne to funkcje w klasie bazowej, które można zastąpić w klasach pochodnych. Ale wcześniej w książce, kiedy uczyłem się o dziedziczeniu podstawowym, byłem w stanie zastąpić funkcje podstawowe w klasach …





13
Czy wbudowane funkcje wirtualne naprawdę nie mają sensu?
Otrzymałem to pytanie, gdy otrzymałem komentarz do recenzji kodu, który mówi, że funkcje wirtualne nie muszą być wbudowane. Pomyślałem, że wbudowane funkcje wirtualne mogą się przydać w scenariuszach, w których funkcje są wywoływane bezpośrednio na obiektach. Ale przyszedł mi do głowy kontrargument - dlaczego ktoś miałby chcieć definiować wirtualne, a …


15
Funkcje wirtualne i wydajność - C ++
W moich projektach klas intensywnie korzystam z klas abstrakcyjnych i funkcji wirtualnych. Miałem wrażenie, że funkcje wirtualne wpływają na wydajność. Czy to prawda? Ale myślę, że ta różnica w wydajności nie jest zauważalna i wygląda na to, że wykonuję przedwczesną optymalizację. Dobrze?





9
Dlaczego C # domyślnie implementuje metody jako niewirtualne?
W przeciwieństwie do języka Java, dlaczego C # domyślnie traktuje metody jako funkcje niewirtualne? Czy bardziej prawdopodobne jest, że będzie to problem z wydajnością, a nie inne możliwe wyniki? Przypomina mi się przeczytanie akapitu Andersa Hejlsberga o kilku zaletach, jakie przynosi istniejąca architektura. Ale co z efektami ubocznymi? Czy to …

9
Bezpiecznie zastępuj funkcje wirtualne C ++
Mam klasę bazową z funkcją wirtualną i chcę przesłonić tę funkcję w klasie pochodnej. Czy istnieje sposób, aby kompilator sprawdzał, czy funkcja, którą zadeklarowałem w klasie pochodnej, faktycznie przesłania funkcję w klasie bazowej? Chciałbym dodać jakieś makro lub coś, co zapewnia, że ​​nie zadeklarowałem przypadkowo nowej funkcji, zamiast nadpisać starą. …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.