Należy słuchać Alf :) Oto moja analiza: w czystym świecie, identyfikacja wdrożeń grozi polimorfizm funkcję wirtualną, nie może być wymagane, a nie powinna być konieczna.
w brudnym świecie rzeczywistym programowaniu, może masz jakieś powody, dla jednoznacznej identyfikacji, takie jak Organizowanie danych na dysku, identyfikowania komunikatów diagnostycznych, śledzenie przepływu sterowania, gromadzenia statystyk użytkowania itp
Jeśli twoje myśli są czyste twój projekt jest zły. Odejdź i zastanów się, dlaczego nie możesz wymagać unikalnego identyfikatora.
Jeśli myśli są skorumpowane przez rzeczywistość, to jesteś już gotowy zapłacić cenę za wydajność i pamięć, aby spełnić Twoje wymagania, a następnie według specyfikacji koszt używania wbudowanych funkcji językowych jest warty zapłaty, ponieważ jest w zasadzie jedynym sposobem na osiągnięcie celu, jakim jest zapewnienie nieinwazyjnej usługi identyfikacji. Przez nieinwazyjne mam na myśli, że nie musisz dodawać niczego do każdej klasy pochodnej. Oczywiście musisz coś dodać, więc jeśli nie chcesz tego zrobić, nie masz wielkiego wyboru, tylko zaakceptować to, co kompilator dodaje.
Głównym problemem jest to, że jeśli używasz dynamicznie ładowanych bibliotek współdzielonych (DLLS), RTTI może nie działać zgodnie z oczekiwaniami. To nie tylko wpływa negatywnie na typids, ale może również zapobiec wychwyceniu wyjątków, które możesz złapać (zostałem ugryziony!). Pewna ostrożność może być potrzebna, aby zapewnić unikalne vtables i inne RTTI. Może to oznaczać na przykład, że jeśli vtables podpinają twój destruktor, nie jest on wbudowany, ponieważ może on zostać wygenerowany w więcej niż jednym miejscu w tym przypadku, niszcząc wyjątkowość. Niektóre hakowanie może być konieczne w przypadku braku obsługi standardu ISO w dynamicznym ładowaniu.
jeśli identyfikator ma być niepowtarzalny, np. ten zwrócony przez typeid. Czy twoja baza jest polimorficzna? – Chubsdad
Moja klasa bazowa IS jest polimorficzna, ale z powodu braku umiejętności znalezienia solidnego i dokładnego wyjaśnienia co do dokładnej natury napięć towarzyszących RTTI (zarówno pod względem wydajności, jak i pamięci), staram się tego wszystkiego całkowicie uniknąć. . – Dan