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