अधिक रिफ्लेक्टिंग फ्रेंडली C ++ लिखना
C ++ में आपको हेडर का उपयोग बिल्कुल नहीं करना है। आप पूरे ऑब्जेक्ट को एक फ़ाइल में उसी तरह परिभाषित कर सकते हैं जैसे आप C # या Java के साथ करते हैं। सी डेवलपर्स आमतौर पर केवल हेडर फ़ाइल में बाहरी कॉल रखेंगे। सभी आंतरिक कॉल्स को .c फ़ाइल में परिभाषित किया जाएगा। उसी टोकन के द्वारा, आप अपनी C ++ .h फ़ाइलों को कक्षाओं / इंटरफेस (शुद्ध आभासी अमूर्त कक्षाओं) / आदि के लिए आरक्षित कर सकते हैं। इसका उद्देश्य DLL के बाहर साझा किया जाना है। आंतरिक कक्षाओं / संरचनाओं / इंटरफेस आदि के लिए, आप बस उस .cpp फ़ाइल को शामिल करेंगे, जिसकी आपको आवश्यकता है:
#include<myclass.cpp>
यह सबसे लोकप्रिय तरीका नहीं है, लेकिन यह कानूनी C ++ है। यह निश्चित रूप से आपके सभी आंतरिक कोड के लिए एक संभावना होगी। यह आंतरिक कोड और कक्षाओं के सेट को मौलिक रूप से बहुत अधिक बदलने की अनुमति देता है, जबकि आपके पुस्तकालय के बाहर कोड के लिए एक अधिक स्थिर इंटरफ़ेस प्रदान करता है / जिसके साथ बातचीत करने के लिए निष्पादन योग्य है।
एक फ़ाइल के अंदर आपकी पूरी कक्षा होने से आपको वह काम करने में आसानी होगी जो आप चाहते हैं। यह एक विधि का नाम बदलने की समस्या को हल नहीं करेगा और हर उस स्थान को खोजा जाएगा जिसे विधि कहा जाता है, लेकिन यह सुनिश्चित करेगा कि आपके पास अधिक बुद्धिमान त्रुटि संदेश हैं। अपने हेडर को एक तरीके से घोषित करने से बदतर कुछ भी नहीं है, लेकिन आप इसे अलग तरीके से लागू करते हैं। हेडर फ़ाइल को कॉल करने वाला अन्य कोड ठीक से संकलन करेगा और आपको एक लिंक अपवाद मिलेगा, जबकि कार्यान्वयन फ़ाइल वह होगी जो शिकायत करती है कि विधि परिभाषित नहीं थी। जब आप हर विधि को (वास्तविक वर्ग की घोषणा में) परिभाषित करते हैं, तो आपको एक ही त्रुटि संदेश मिलेगा चाहे कोई भी फ़ाइल इसमें शामिल हो।
आप इस प्रश्न को भी देखना चाहेंगे: C ++ के लिए अच्छा रीफैक्टरिंग उपकरण
कैसे C / C ++ हैडर / कार्यान्वयन फ़ाइलें हल करता है
आधार सी स्तर (और C ++ को उस नींव पर बनाया गया है) पर, हेडर फाइलें एक फ़ंक्शन / स्ट्रक्चर / वैरिएबल के वादे की घोषणा करती हैं जो कंपाइलर को ऑब्जेक्ट फाइल बनाने की अनुमति देने के लिए पर्याप्त है। इसी तरह C ++ हैडर फाइलें फंक्शंस, स्ट्रक्चर्स, क्लासेस आदि के वादे को घोषित करती हैं। यह इस परिभाषा है कि कंपाइलर स्टैक में जगह आरक्षित करने के लिए उपयोग करता है, आदि।
.C या .cpp फ़ाइलों का कार्यान्वयन होता है। चूंकि कंपाइलर प्रत्येक कार्यान्वयन फ़ाइल को ऑब्जेक्ट फ़ाइल में परिवर्तित करता है, अकल्पित अवधारणाओं (हेडर में घोषित किया गया) के लिए हुक हैं। लिंकर अन्य ऑब्जेक्ट फ़ाइलों में कार्यान्वयन के लिए हुक लगाता है और एक बड़ा बाइनरी बनाता है जिसमें सभी कोड (साझा पुस्तकालय या निष्पादन योग्य) शामिल होते हैं।
वीएस विशिष्ट
विजुअल स्टूडियो में उन लोगों के साथ काम करने के लिए, कुछ जादूगर हैं जो चीजों को थोड़ा आसान बनाने में मदद करते हैं। नया वर्ग विज़ार्ड हेडर और कार्यान्वयन फ़ाइलों की आपकी मिलान जोड़ी बनाएगा। यहां तक कि एक वर्ग ब्राउज़र सुविधा भी है जो आपको नए तरीकों की घोषणा करने की अनुमति देगी। यह हेडर और कार्यान्वयन स्टब में .cpp फ़ाइल में परिभाषा को इंजेक्ट करेगा। विजुअल स्टूडियो में एक दशक से अधिक समय तक वे विशेषताएं रही हैं (जब तक मैंने उनका उपयोग किया है)।