ile kosztuje wywolanie metody wirtualnej

0

no więc chciał bym sie dowiedziec ile to właściwie kosztuje w rzecz ze w googlach nie ma o tym za wiele a jak juz jest to hmm nie mam porownia tzn. jesli ktos by mogl mi to przetlumaczyc na chlopski rozum siegniecie do metody wirtualnej ile to jest ifów czy tez porownian (==) ?

0

no więc chciał bym sie dowiedziec ile to właściwie kosztuje w rzecz ze w googlach nie ma o tym za wiele a jak juz jest to hmm nie mam porownia tzn. jesli ktos by mogl mi to przetlumaczyc na chlopski rozum siegniecie do metody wirtualnej ile to jest ifów czy tez porownian (==) ?

Ja bym tak dał z 50 PLN ale mogę się mylić :P
O jakich ifach i porównaniach mówisz???!!!
Wywołanie wirtualne nie kosztuje nic jeśli jest znany dokładny typ obiektu ale nie wskaźnik czy referencja (inline też może być, a co...):

class A
{
public:
    virtual foo() {}
};
//...
    A a;
    a.foo(); // tu kompilator wie, że to ma być A::foo()

Jeżeli jest wskaźnik lub referencja to kosztuje jedną dereferencję adresu z tablicy funkcji wirtualnych (result may vary - zależy od kompilatora, sposobu kompilacji, itd.)

    A *a;
    a->foo(); // tu już kompilator nie wie co to może być

</cpp>
0

ile to jest jedna dereferencja ? tzn. co wiecej kosztuje :
a->foo();

czy:

int a,b;
if(a==b);

0

Swoja droga co ma piernik do wiatraka, a tym samym porownanie do wywolania metody z obiektu ?

62:       s->foo();
004011EB   mov         ecx,dword ptr [ebp-4]
004011EE   call        @ILT+20(A::foo) (00401019)
63:
64:       int a,b;
65:       if (a==b)
004011F3   mov         ecx,dword ptr [ebp-8]
004011F6   cmp         ecx,dword ptr [ebp-0Ch]
004011F9   jne         main+3Dh (004011fd)

co robi call oraz co robi cmp i jne chyba nie musze pisac ? Wiec teraz z tego sporobuj wysnuc jakies konstruktywne wnioski dla siebie bo ja nie widze sensu porownywania tych dwoch rzeczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1