Witam i dziękuję za przeczytanie. Może być po prostu objętych kategorii "osobistych preferencji, ale i tak jedziemy ...Definiowanie konstruktora w pliku nagłówkowym Plik implementacji VS (.cpp)
mogę zdefiniować ciało konstruktora klasy w klasie .h pliku lub w pliku .cpp realizacja . Te dwa style są prawdopodobnie identyczne, jeśli chodzi o kompilator w ramach konkretnego projektu (projekt dla mnie oznacza dll). To samo dotyczy wszystkich funkcji składowych naprawdę: można je zdefiniować w pliku nagłówkowym lub po prostu tam zadeklarować, a następnie zdefiniować w pliku cpp.
JEDNAK ...
Uważam, że jeśli trzeba dołączyć plik nagłówkowy takie klasa (-y) w różnych projektach (co oznacza, że ostatecznie kod, który używa pliku nagłówka kończy się w innym dll) wtedy faktyczna implementacja w pliku nagłówkowym powoduje pewne bóle głowy podczas kompilacji (nie w łączeniu ... nawet nie dojdę do tego punktu). Dlaczego? No cóż, nie będę się zbytnio zajmował szczegółami, ale kompilator najwyraźniej próbuje rozwiązać wszystkie funkcje, które mogą być zdefiniowane w innych plikach nagłówkowych itp. ... zmuszając biednego programistę do rozpoczęcia pobierania różnych plików nagłówkowych ...
LONGSTORY short:
Czy nie zawsze najlepiej jest zachować pliki nagłówkowe wolne od implementacji i po prostu używać ich do "deklaracji"? Ułatwiłoby to włączenie ich do więcej niż jednego projektu bez konieczności noszenia dodatkowych śmieci.
Co sądzisz o tym? Dzięki!
Istnieją nawet przypadki, w których można umieścić implementację w nagłówku. Powiedzmy, że jeśli dwa różne pliki muszą się wzajemnie uzupełniać, nie można tego zrobić w nagłówku, należy to zrobić na stronie cpp. –
Masz na myśli "nie może", a nie "może". W przeciwnym razie, dobry punkt. – Thomas
Wyjątek "trywialny" można równie łatwo zastosować do trywialnego konstruktora. Nie ma powodu, aby traktować je inaczej lub nie mieć ich również w formie inline. –