C++ भाषा को C के साथ ऑब्जेक्ट-ओरिएंटेड अवधारणाओं जैसी कुछ अतिरिक्त विशेषताओं को जोड़कर डिज़ाइन किया गया है। अधिकांश C प्रोग्राम C++ कंपाइलर का उपयोग करके भी कंपाइल किए जा सकते हैं। हालांकि कुछ प्रोग्राम हैं जिन्हें C++ कंपाइलर का उपयोग करके कंपाइल नहीं किया जा सकता।
आइए कुछ कोड देखें जो C कंपाइलर में कंपाइल होंगे लेकिन C++ कंपाइलर में नहीं।
इस प्रोग्राम में C++ कोड के लिए एक कंपाइलेशन त्रुटि होगी। क्योंकि यह एक फ़ंक्शन को कॉल करने का प्रयास कर रहा है जो घोषित नहीं है। लेकिन C में यह कंपाइल हो सकता है।
C के लिए
उदाहरण
#include <stdio.h>
int main() {
myFunction(); // myFunction() घोषणा से पहले कॉल की गई
}
int myFunction() {
printf("Hello World");
return 0;
}
आउटपुट (C)
Hello World
आउटपुट (C++)
[Error] 'myFunction' was not declared in this scope
C++ में एक सामान्य पॉइंटर कुछ स्थिर वेरिएबल्स को इंगित नहीं कर सकता, लेकिन C में यह इंगित कर सकता है।
C के लिए
उदाहरण
#include <stdio.h>
int main() {
const int x = 10;
int *ptr;
ptr = &x;
printf("x का मान: %d", *ptr);
}
आउटपुट (C)
x का मान: 10
आउटपुट (C++)
[Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]
C++ में, जब हम void पॉइंटर को int*, char* जैसे अन्य पॉइंटर प्रकारों को असाइन करना चाहते हैं तो हमें स्पष्ट रूप से टाइपकास्ट करना होगा, लेकिन C में यदि यह टाइपकास्ट नहीं किया गया है तो यह कंपाइल हो जाएगा।
C के लिए
उदाहरण
#include <stdio.h>
int main() {
void *x;
int *ptr = x;
printf("Done");
}
आउटपुट (C)
Done
आउटपुट (C++)
[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]
C++ में, हमें स्थिर वेरिएबल्स को आरंभ करना होगा लेकिन C में यह आरंभीकरण के बिना कंपाइल हो सकता है।
C के लिए
उदाहरण
#include <stdio.h>
int main() {
const int x;
printf("x: %d", x);
}
आउटपुट (C)
x: 0
आउटपुट (C++)
[Error] uninitialized const 'x' [-fpermissive]
C में हम 'new' नामक वेरिएबल का उपयोग कर सकते हैं। लेकिन C++ में हम इस नाम को वेरिएबल नाम के रूप में उपयोग नहीं कर सकते क्योंकि C++ में 'new' एक कीवर्ड है। इसका उपयोग मेमोरी स्पेस आवंटित करने के लिए किया जाता है।
C के लिए
उदाहरण
#include <stdio.h>
int main() {
int new = 10;
printf("new: %d", new);
}
आउटपुट (C)
new: 10
आउटपुट (C++)
[Error] expected unqualified-id before 'new'
हम C++ में निम्न कोड को कंपाइल नहीं कर सकते। यह int को char* में बदलने का प्रयास करते समय त्रुटि देगा। लेकिन C में यह ठीक काम करेगा।
C के लिए
उदाहरण
#include <stdio.h>
int main() {
char *c = 123;
printf("c = %u", c);
}
आउटपुट (C)
c = 123
आउटपुट (C++)
[Error] invalid conversion from 'int' to 'char*' [-fpermissive]
C में हम main() के रिटर्न प्रकार के रूप में void का उपयोग कर सकते हैं, लेकिन C++ में हमें main() के रिटर्न प्रकार के रूप में int का उपयोग करना होगा।
C के लिए
उदाहरण
#include <stdio.h>
void main() {
printf("Hello World");
}
आउटपुट (C)
Hello World
आउटपुट (C++)
[Error] '::main' must return 'int'