Βασική διαφορά: Οι C και C ++ είναι δύο διαφορετικές γλώσσες προγραμματισμού υπολογιστών. Το C ++ αναπτύχθηκε από τη γλώσσα προγραμματισμού C. Ωστόσο, είναι πολύ διαφορετικές στη φύση τους. Η πιο προφανής διαφορά είναι ότι το C είναι μια γλώσσα προσανατολισμένη προς τη διαδικασία, ενώ το C ++ υποστηρίζει προγραμματισμό και αντικειμενοστραφή προγραμματισμό, επομένως συχνά ονομάζεται υβριδική γλώσσα.
Το C είναι μία από τις παλαιότερες γλώσσες προγραμματισμού που χρησιμοποιείται σήμερα και είναι μία από τις πιο διαδεδομένες γλώσσες προγραμματισμού. Έχει χρησιμοποιηθεί συνεχώς σε εφαρμογές που είχαν προηγουμένως κωδικοποιηθεί στη γλώσσα συναρμολόγησης. Αυτό περιλαμβάνει το λειτουργικό σύστημα υπολογιστή UNIX. Το C έχει επίσης επηρεάσει άμεσα ή έμμεσα πολλές από τις μεταγενέστερες γλώσσες προγραμματισμού, όπως C #, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python και shell C του Unix. Παρά τις νέες γλώσσες, το C παραμένει μια δημοφιλής γλώσσα προγραμματισμού.
Το C ++ αρχικά ξεκίνησε ως ένα βελτιωτικό για το C. Σχεδιάστηκε για να είναι συμβατό με τον κώδικα πηγής και συνδέσμου με το C. Παρόλα αυτά, πρόσθεσε κλάσεις, εικονικές λειτουργίες, υπερφόρτωση φορέα, πολλαπλή κληρονομιά, πρότυπα, χειρισμό εξαιρέσεων κλπ. Τελικά ανέπτυξε αρκετά ώστε να θεωρείται από μόνη της γλώσσα προγραμματισμού. Αρχικά επικυρώθηκε το 1998 ως πιστοποιημένη γλώσσα προγραμματισμού ISO / IEC 14882: 1998. Σήμερα, η C ++ χρησιμοποιείται συνήθως για το σχεδιασμό υλικού.
Το C είναι μια γλώσσα προγραμματισμού γενικού σκοπού που χρησιμοποιεί το τετράγωνο (?) Ως τερματισμό δήλωσης, καθώς και τα σγουρά ({}) για την ομαδοποίηση μπλοκ δηλώσεων. Έχει εγκαταστάσεις για δομημένο προγραμματισμό και ο σχεδιασμός του παρέχει κατασκευές που μπορούν να χαρτογραφηθούν αποτελεσματικά στις τυπικές οδηγίες του μηχανήματος. Επιτρέπει επίσης τη λεκτική μεταβλητή εμβέλεια και την επανάληψη και διαθέτει ένα σύστημα στατικού τύπου, το οποίο αποτρέπει πολλές ακούσιες πράξεις.
Ωστόσο, σε σύγκριση με τη C ++, ο C έχει πολλούς περιορισμούς. Καθώς το C δεν είναι αντικειμενοστρεφές, δεν υποστηρίζει τις έννοιες OOPS. C δεν υποστηρίζει τη λειτουργία και την υπερφόρτωση του χειριστή. Δεν μπορεί να χρησιμοποιήσει λειτουργίες μέσα στις δομές. Δεν υποστηρίζει εικονικές λειτουργίες και μεταβλητές αναφοράς ή χειρισμό εξαιρέσεων. Επίσης, δεν υποστηρίζει μεταβλητές αναφοράς. Επιπροσθέτως, το C επίσης δεν εγκλείει την κάψουλα ή την ασφάλεια δεδομένων. Σε σύγκριση, η C ++ υποστηρίζει όλα αυτά τα χαρακτηριστικά.
Οι δύο γλώσσες διαφέρουν επίσης στον τρόπο λειτουργίας των λειτουργιών μνήμης διεύθυνσης, της εισόδου-εξόδου και του προγραμματισμού GUI. Για παράδειγμα, το C χρησιμοποιεί τις λειτουργίες calloc (), malloc () και free () για την κατανομή και την εκχώρηση μνήμης, ενώ η C ++ χρησιμοποιεί νέα και διαγραφή. Το C χρησιμοποιεί scanf () και printf () για την είσοδο και την έξοδο, ενώ το C ++ χρησιμοποιεί τους χειριστές cin >> και cout <<. Το C υποστηρίζει το εργαλείο GTK για προγραμματισμό GUI, ενώ το C ++ υποστηρίζει εργαλεία Qt για προγραμματισμό GUI. Μια άλλη διαφορά είναι ότι ο C απαιτεί να δηλώσει κανείς όλες τις μεταβλητές στην κορυφή του προγράμματος, ενώ στην C ++ οι μεταβλητές μπορούν να δηλωθούν οπουδήποτε στο πρόγραμμα.
Επιπλέον, η C ++ θεωρείται συνήθως ευκολότερη στην εκμάθηση, καθώς είναι πιο φιλική προς τον χρήστη από το C. C ++ έχει επίσης πολλές πρόσθετες λειτουργίες που διευκολύνουν την κωδικοποίηση, ειδικά για κάποιον που είναι νέος στο πλαίσιο C. Ωστόσο, πολλοί ισχυρίζονται ότι έχει πράγματι σημασία. Οι δύο γλώσσες διαφέρουν τόσο πολύ, ότι μπορούν στην πραγματικότητα να είναι δύο διαφορετικές γλώσσες ανεξάρτητες μεταξύ τους. Ένα πράγμα που πρέπει να θυμάστε είναι ότι το C είναι πολύ πιο δομημένο από το C ++, ενώ το C ++ σχεδιάστηκε για να είναι πιο εκφραστικό και αφηρημένο από το C.
Σύγκριση μεταξύ C και C ++:
ντο | C ++ | |
Ιδρύθηκε το | Αναπτύχθηκε από τον Dennis Ritchie στα AT & T Bell Labs μεταξύ 1969 και 1973. | Αναπτύχθηκε από τον Bjarne Stroustrup στα Bell Labs ξεκινώντας το 1979. |
Κωδικός πηγής | Κωδικός πηγής ελεύθερης μορφής | Αρχικά αναπτύχθηκε από τη γλώσσα προγραμματισμού C |
Γλώσσα | Διαδικασία Προσανατολισμένη γλώσσα | Υποστηρίζει τόσο τα διαδικαστικά όσο και τα αντικειμενοστρεφή παραδείγματα προγραμματισμού. ως εκ τούτου συχνά ονομάζεται υβριδική γλώσσα. |
Πλησιάζω | Ακολουθεί προσέγγιση από την κορυφή προς τη βάση. | Ακολουθεί προσέγγιση από τη βάση προς την κορυφή. |
Σχέση | Το C είναι ένα υποσύνολο της C ++. Δεν μπορεί να εκτελέσει κώδικα C ++. | Το C ++ είναι ένα υπερσύνολο του C. Η C ++ μπορεί να τρέξει το μεγαλύτερο μέρος του κώδικα C ενώ ο C δεν μπορεί να τρέξει τον κώδικα C ++. |
Οδηγώ | Λειτουργική γλώσσα | Γλώσσα που βασίζεται σε αντικείμενα |
Συγκεντρώνω | Εστιάζει στη μέθοδο ή τη διαδικασία παρά στα δεδομένα. | Εστιάζει στα δεδομένα παρά στη μέθοδο ή τη διαδικασία. |
Δομικά στοιχεία | Λειτουργίες | Αντικείμενα |
Λέξεις κλειδιά | Περιέχει 32 λέξεις-κλειδιά | Περιέχει 52 λέξεις-κλειδιά |
OOPS Έννοιες | Δεδομένου ότι η γλώσσα C είναι γλώσσα που καθοδηγείται από διαδικασίες, δεν υποστηρίζει έννοιες OOPS όπως τάξη, αντικείμενο, κληρονομιά, πολυμορφισμός, κρύψιμο δεδομένων κλπ. | Ως αντικειμενοστρεφής γλώσσα, το C ++ υποστηρίζει κλάση, αντικείμενο, κρύψιμο δεδομένων, πολυμορφισμό, κληρονομικότητα, αφαίρεση κλπ. |
Λειτουργίες |
|
|
Λειτουργίες μνήμης | Χρησιμοποιεί τις λειτουργίες calloc (), malloc () και free () για την κατανομή και την εκχώρηση της μνήμης. | Χρησιμοποιεί νέους χειριστές και διαγράφει για τον ίδιο σκοπό. |
Ενθυλάκωση | Δεν υποστηρίζει. Τα δεδομένα και οι λειτουργίες είναι ξεχωριστές και ελεύθερες οντότητες. | Υποστηρίζει την ενθυλάκωση. Τα δεδομένα και οι λειτουργίες είναι ενθυλακωμένα μαζί με τη μορφή ενός αντικειμένου. Η κατηγορία αντικειμένων παρέχει ένα σχέδιο της δομής του αντικειμένου. |
Κρυφή πληροφοριών | Το C δεν υποστηρίζει την απόκρυψη πληροφοριών. Εδώ, τα δεδομένα είναι ελεύθερες οντότητες και μπορούν να χρησιμοποιηθούν με εξωτερικό κώδικα. | Ο εγκλωβισμός αποκρύπτει τα δεδομένα για να διασφαλίσει ότι οι δομές δεδομένων και οι χειριστές χρησιμοποιούνται όπως προβλέπεται. |
Δεδομένα | Υποστηρίζει ενσωματωμένους και πρωτόγονους τύπους δεδομένων. Τα δεδομένα δεν είναι ασφαλή λόγω προσανατολισμού χωρίς αντικείμενα | Υποστηρίζει τόσο τους ενσωματωμένους όσο και τους χρήστες που ορίζουν τύπους δεδομένων. Τα δεδομένα είναι ασφαλή (κρυφή) στη C ++ |
Επίπεδο | Γλώσσα χαμηλού επιπέδου | Γλώσσα μεσαίου επιπέδου |
Εισόδου-εξόδου | Η γλώσσα 'C' χρησιμοποιεί scanf () και printf () για είσοδο και έξοδο. | Η γλώσσα 'C ++' χρησιμοποιεί τους χειριστές cin >> και cout << για την είσοδο και την έξοδο. |
Δήλωση μεταβλητών | C απαιτεί ένα να δηλώσει όλες τις μεταβλητές στο πάνω μέρος του προγράμματος. | Στην C ++, οι μεταβλητές μπορούν να δηλωθούν οπουδήποτε στο πρόγραμμα πριν από τη χρήση. |
Πολλαπλή δήλωση | Πολλαπλή δήλωση συνολικών μεταβλητών επιτρέπεται. | Πολλαπλή δήλωση συνολικών μεταβλητών δεν επιτρέπεται. |
Χαρτογράφηση | Η χαρτογράφηση μεταξύ στοιχείων και λειτουργιών είναι δύσκολη και περίπλοκη. | Η χαρτογράφηση μεταξύ δεδομένων και λειτουργίας μπορεί να χρησιμοποιηθεί με τη χρήση "αντικειμένων" |
Προγραμματισμός GUI | Το C υποστηρίζει το εργαλείο GTK για προγραμματισμό GUI | Το C ++ υποστηρίζει εργαλεία Qt για προγραμματισμό GUI |
Κληρονομία | Η κληρονομικότητα δεν είναι δυνατή στο C | Η κληρονομικότητα είναι δυνατή στην C ++ |
Επέκταση αρχείου | Έχει επέκταση αρχείου .c | Έχει επέκταση αρχείου .cpp |
Προκαθορισμένο αρχείο κεφαλίδας | Το προεπιλεγμένο αρχείο κεφαλίδας που χρησιμοποιείται στη γλώσσα C είναι stdio.h | Το προεπιλεγμένο αρχείο κεφαλίδας που χρησιμοποιείται στη C ++ είναι το iosteam.h |
Μερικά παραδείγματα διαφορών μεταξύ C και C ++:
Παραδείγματα | ντο | C ++ |
Μεταβλητή δήλωση | Μόνο στην κορυφή: int i; για (i = 10, i <10, i ++) | Οπουδήποτε στο πρόγραμμα: για το (int i = 10, i <10, i ++) |
Κατανομή μνήμης | Malloc: int * x = malloc (μέγεθοςof (int)). int * x_array = malloc (μέγεθοςof (int) * 10); | Νέος: int * x = νέο int; int * x_array = νέο int [10]; |
Απελευθέρωση μνήμης | Ελεύθερος: δωρεάν (x); δωρεάν (x_array); | Διαγράφω: διαγραφή x; διαγραφή [] x_array; |