पहले मैं बता दूं कि मैं जावा से आ रहा हूं।

तो मैंने कल सी ++ ओओ प्रोग्रामिंग में खोला और मैं हेडर फ़ाइल में कार्यों के बारे में थोड़ा उलझन में हूं।

मेरे लिए ऐसा लगता है, वस्तु को वहां परिभाषित किया गया है, साथ ही साथ सभी कार्य जो केवल वस्तु से संबंधित हैं, स्थिर वर्ग नहीं। लेकिन चूंकि मुझे एक ऑब्जेक्ट को इनिशियलाइज़ करने के लिए उपयोग किया जाता है, जो कई फ़ील्ड और फिर फ़ंक्शन को कॉल करता है जो उन फ़ील्ड का उपयोग चीजों को करने के लिए करते हैं और जितना संभव हो सके स्थिर कार्यों से बचते हैं, परिणाम पूरी तरह से स्पैम की गई हेडर फ़ाइल है, जिससे क्लास का .cpp प्रतिनिधित्व होता है। लगभग ज़रूरत से ज़्यादा। क्या मुझे यहां कुछ याद आ रहा है या सी ++ ओओपी वास्तव में केवल डेटा ऑब्जेक्ट्स के बारे में है?

जहां तक ​​​​मुझे पता चला, सीपीपी फाइलों का वास्तव में उपयोग किया जाना चाहिए, लेकिन इसके कार्यों में आवश्यक सभी चीजों को पैरामीटर के माध्यम से सौंप दिया जाना चाहिए, यहां तक ​​​​कि उसी वर्ग की वस्तुओं को भी।

0
pikkuez 20 पद 2020, 12:13
यदि आप हेडर फ़ाइल में फ़ंक्शन (किसी भी प्रकार का) नहीं डालना चाहते हैं, तो उन्हें वहां न रखें। यह अनिवार्य नहीं है।
 – 
john
20 पद 2020, 12:18
बस मेरा विनम्र निष्कर्ष। @ जॉन तो उन कार्यों को सीपीपी फ़ाइल में रखने का कोई तरीका है? क्या आप इसके बारे में विस्तार से बता सकते हैं? उस पर एक अच्छा संसाधन नहीं मिला (यहां तक ​​​​कि मुझे यकीन है कि अगर ऐसा है, तो होना चाहिए)।
 – 
pikkuez
20 पद 2020, 12:19
1
सामान्य तौर पर जावा प्रोग्रामर सी ++ में संघर्ष करते हैं क्योंकि वे उन अवधारणाओं को लागू करने का प्रयास करते हैं जो जावा में सी ++ में काम करते हैं। वाक्य रचना में समानता के बावजूद वे वास्तव में मूल रूप से भिन्न भाषाएं हैं। आपको शायद एक अच्छी किताब की जरूरत है।
 – 
john
20 पद 2020, 12:20
आप वर्ग कार्यों (उर्फ विधियों) के बारे में बात कर रहे हैं?
 – 
john
20 पद 2020, 12:21
2
मैं एक साधारण उदाहरण लिखूंगा। यह भी ध्यान रखें कि पूरी कक्षा को एक सीपीपी फ़ाइल में डालने से आपको कोई रोक नहीं सकता है। हेडर फाइलें और सीपीपी फाइलें सी ++ बिल्ड सिस्टम की कलाकृतियां हैं, उनका वस्तुओं या कक्षाओं से कोई लेना-देना नहीं है।
 – 
john
20 पद 2020, 12:24

1 उत्तर

सबसे बढ़िया उत्तर

वर्ग विधियों को परिभाषित करने के लिए यहां दो विकल्प दिए गए हैं, पहला हेडर फ़ाइल के भीतर है, दूसरा हेडर फ़ाइल और सीपीपी फ़ाइल के बीच विभाजित है।

// *** in the header file only ***
class X
{
    void some_function() { /* some code */ }
};

// *** split between the header file and a cpp file ***

// header file
class X
{
    void some_function(); // declaration only
};

// cpp file
#include "header_file.h"

void X::some_function() // definition
{
    /* some code */
}
2
john 20 पद 2020, 12:26
आह अब मैं देखता हूं, ठीक वही जो मैं ढूंढ रहा था, इसकी बहुत सराहना करते हैं, समय निकालने के लिए धन्यवाद! मैं बस सोच रहा था कि फ़ील्ड आमतौर पर .cpp वर्ग में पहुंच योग्य नहीं हैं यदि स्थिर भी नहीं है।
 – 
pikkuez
20 पद 2020, 12:31