C vs C++ अंतर
C और C++: छोटी कहानी
C पहले आई, 1970 के दशक की शुरुआत में, operating systems और अन्य low-level software बनाने की एक compact language के रूप में। सालों बाद C++ बनाई गई — C के एक extension के रूप में। इसने वह सब रखा जो C कर सकती थी और programs को व्यवस्थित करने का एक बिल्कुल नया तरीका जोड़ा जिसे object-oriented programming कहते हैं।
तो संबंध सरल है: C++ यानी C और उससे ज़्यादा। जो कुछ आप C में लिखते हैं वह लगभग C++ में भी चलता है, पर C++ आपको अतिरिक्त उपकरण देता है जो बड़े, जटिल projects में चमकते हैं। बाकी lesson ठीक यही अतिरिक्त चीज़ें दिखाता है।
Procedural बनाम object-oriented
यह सबसे गहरा अंतर है। C में आप functions के रूप में सोचते हैं जो data पर काम करते हैं। C++ में आप objects के रूप में भी सोच सकते हैं — ऐसे bundles जो संबंधित data और उस पर काम करने वाले functions को एक जगह (एक class) रखते हैं।
C: "यह कुछ data है, और ये functions हैं जो उस पर काम करते हैं।" C++: "यह एक object है जो अपनी data का मालिक है और खुद पर काम करना जानता है।"
Input और output
print करने का तरीका तक अलग है। C printf और scanf इस्तेमाल करती है; C++ cout और cin के साथ एक साफ़ stream style जोड़ती है।
// C
#include <stdio.h>
int main() {
printf("Hello from C\n");
return 0;
}Hello from C
// C++
#include <iostream>
using namespace std;
int main() {
cout << "Hello from C++" << endl;
return 0;
}Hello from C++
C++ जो C में जोड़ता है
ये बड़े features हैं जो C में हैं ही नहीं:
- Classes और objects — data को उसके इस्तेमाल करने वाले functions के साथ बाँधना।
- Function overloading — कई functions एक नाम अलग parameters के साथ साझा कर सकते हैं।
- Inheritance — मौजूदा classes से नई classes बनाना।
- Templates — एक ही code जो कई types के लिए काम करे।
- Exception handling — साफ़ error handling के लिए
try/catch।
Memory management
दोनों run time पर memory ले सकते हैं। C malloc और free इस्तेमाल करती है; C++ सरल new और delete जोड़ती है (और malloc/free की भी अनुमति देती है)।
| काम | C | C++ |
|---|---|---|
| Allocate | malloc() | new (या malloc) |
| Release | free() | delete (या free) |
malloc और free विस्तार से समझने के लिए देखें C में dynamic memory।
पूरी तुलना तालिका
| बिंदु | C | C++ |
|---|---|---|
| Programming style | Procedural | Procedural + object-oriented |
| Classes और objects | नहीं | हाँ |
| Function overloading | नहीं | हाँ |
| Inheritance / templates | नहीं | हाँ |
| Input / output | printf, scanf | cout, cin |
| Memory | malloc, free | new, delete (+ malloc/free) |
| Exception handling | Built-in नहीं | है (try/catch) |
| आम उपयोग | OS, embedded, drivers | Apps, games, बड़े software |
पहले कौन सी सीखें?
कोई एक सही जवाब नहीं है, पर एक आम, भरोसेमंद रास्ता यह है:
- पहले C सीखें अगर आप memory, pointers और programs असल में कैसे काम करते हैं — इनकी ठोस समझ चाहते हैं। ये लगभग हर दूसरी language में काम आती हैं।
- सीधे C++ पर जाएँ अगर लक्ष्य जल्दी applications या games बनाना है और object-oriented विचार जल्दी सीखने में सहज हैं।
किसी भी हाल में, C पर लगाया समय कभी बर्बाद नहीं जाता — इसके concepts C++ के नीचे बैठे होते हैं।
आम भ्रम
- "C++ हमेशा C से तेज़ है।" सच नहीं — दोनों efficient code बनाते हैं; आपका algorithm कहीं ज़्यादा मायने रखता है।
- "C पुरानी हो गई।" नहीं — C आज भी operating systems, embedded devices और महत्वपूर्ण software चलाती है।
- "C++ छूने से पहले C में महारत ज़रूरी है।" मददगार, पर अनिवार्य नहीं; कई लोग सीधे C++ से शुरू करते हैं।
- "C++ ने C की जगह ले ली।" दोनों साथ रहते हैं; हर एक अलग कामों के लिए उपयुक्त है।
वही "दो numbers जोड़ो" program दो बार लिखें — एक बार C में printf/scanf से, एक बार C++ में cout/cin से। देखें क्या समान रहता है (logic) और क्या बदलता है (syntax)।
सारांश
- C procedural है; C++ procedural और object-oriented है।
- C++ C के extension के रूप में शुरू हुई और ज़्यादातर उससे compatible है।
- C++ classes, overloading, inheritance, templates और exceptions जोड़ती है।
- कोई अपने आप तेज़ नहीं — algorithm सबसे ज़्यादा मायने रखता है।
- पहले C सीखने से fundamentals मज़बूत होते हैं; C++ स्वाभाविक अगला कदम है।