मैं अपने विश्वविद्यालय परियोजना के लिए डर एसडीके को देखकर किया गया है, लेकिन इतना जैसे कुछ कोड पर ध्यान दिया है:एक हेडर और आगे एक ही सीपीपी फ़ाइल में निहित कक्षा घोषित क्यों करें?
Foo.h
class Foo
{
public:
int iSomething;
};
Bar.cpp:
#include "Foo.h"
// Forward declarations
class Foo;
है घोषित करने और उसी सीपीपी फ़ाइल में उचित शीर्षलेख शामिल करने के लिए कोई विशेष कारण है? या आगे की घोषणा अनावश्यक है क्योंकि हेडर शामिल किया जा रहा है?
संपादित करें:
हर बार है कि मैं कोड में यह देखा है, को शामिल बयान आगे घोषणा से पहले हमेशा होता है।
क्या आप विस्तृत कर सकते हैं? मैंने मूल रूप से यह वही बात लिखी थी, लेकिन फिर मैंने इसके बारे में कुछ और सोचा और पाया कि यदि बार आगे फू घोषित करता है, तो तत्काल # Foo.h शामिल करता है, यह होना चाहिए) हमेशा फू की घोषणा में परिणाम होता है, और बी) पहले से ही फू घोषित करने वाले किसी अन्य शीर्षलेख पर निर्भर न करें। क्या आप एक उदाहरण दे सकते हैं जहां # अंतर्निहित वास्तव में मदद करने से पहले आगे की घोषणा हो रही है? – mgiuca
@mgiuca - संकलन के समय को कम करता है। बार-बार कोड केवल पॉइंटर्स का उपयोग करता है, और कक्षा के वास्तविक आकार की आवश्यकता नहीं होती है [और कभी भी उदाहरण नहीं बनाते]।उन परिस्थितियों में, एक आगे की घोषणा पर्याप्त है, जो आपको # फ़ाइलों को शामिल करने का समय बचाती है। –
@ फ़ू बह हां, यह एक # अंतर्निहित * के बजाय आगे की घोषणा का उपयोग करने का एक अच्छा कारण है। लेकिन यह समझा नहीं है कि आप दोनों क्यों होंगे। यदि आपके पास दोनों थे, तो आपको शामिल फ़ाइल को संसाधित करने की आवश्यकता होगी, चाहे इसका उपयोग किया गया हो या नहीं। – mgiuca