Mam ten problem że gdy czytałem o typowaniu to natrafiłem też na nazywanie np typowania statycznego "typem statycznym" i tak samo z dynamicznym
jeśli mamy np. *pa = new B to wtedy pa jest typem dynamicznym?
Generalnie czy takie nazewnictwo(typowanie dynamiczne=typ dynamiczny) jest złe?
Nie mam pojęcia czym jest *pa
, jeśli miało to być coś w stylu
A* pa = new B; // ohydna notacja wegierska
to pa
jest obiektem typu A*
(czyli wskaźnikiem na A
), wskazującym na obiekt, którego dynamicznym typem jest B
.
Moja rada zapomnij o takim podziale bo jest on tylko mylący/dezinformujący.
Trzymaj się tego że zmienna( wartość/data ) jest w pamięci stack, heap lub data.
A nie mylisz statycznego/dynamicznego typowania
ze statyczną/dynamiczną alokacją pamięci
? Bo różnica jak między piciem w szczawnicy a szczaniem w piwnicy...
Typowanie statyczne i dynamiczne
Odrzuć słowo "typowanie", bo dynamicznie tutaj tworzysz obiekty co najwyżej. Typowanie to co innego. Nie wiem czy w ogóle C++ istnieje coś takiego jak typowanie dynamiczne.
Typowanie dynamiczne jest wtedy, kiedy nie deklarujesz typu zmiennej, tylko masz jakąś zmienną i ma ona typ taki, jaki jej przypiszesz. Np. w Pythonie zmienne nie mają zadeklarowanych typów, tylko jak piszesz:
foo = 3
i w ten sposób dynamicznie "przypisujesz typ do zmiennej" poprzez to, że przypisałeś do niej wartość jakiegoś typu.
używając statycznego typowania musiałbyś napisać coś jak:
int foo = 3;
tj. musiałbyś zadeklarować, że jest to liczba.
natomiast w C++ jest zdaje się coś takiego jak auto
ale nie wiem dokładnie jak to działa, czy można to nazwać typowaniem dynamicznym (czy może tylko statyczną inferencją?).
Podeślij artykuł, który wyjaśnia co to typ dynamiczny, bo jestem ciekaw.
Nie do końca rozumiem czemu czepiacie się dynamicznego typu. To standardowa nomenklatura w C++.
http://eel.is/c++draft/defns.dynamic.type
§ 1.3.7 dynamic type [defns.dynamic.type]
⟨glvalue⟩ type of the most derived object to which the glvalue refers
[ Example: If a pointerp
whose static type is “pointer to classB
” is pointing to an object of classD
, derived fromB
, the dynamic type of the expression*p
is “D
”. References are treated similarly. — end example ]