Hat C Klassen? [geschlossen]

7

Okay, Sie können mich ein Noob nennen, aber ich verwirre verwirrt.

Meine Ex-Klassenkameradin hat mich bezahlt, um ein Programm in C zu schreiben. Sie gab mir die Aufgabe und es sagte so etwas wie "bla bla bla mach mindestens zwei Klassen , schreibe mindestens einen Konstrukteur und schreiben Sie mindestens eine Methode "Das sagt das Wort für Wort.

Und dann sagte ich ihr: "Das ist C ++ nicht C", sagte sie, "aber wir lernen C"

Ich ignorierte es und schrieb das Programm in C ++ und schickte es an sie, weil ich dachte, sie wüsste nicht, wovon sie redete. Sie sagte: "Es funktioniert nicht auf Codeblöcke, und wtf ist cout & lt; & lt;" und dann schickte sie mir einen Teil des Codes, den sie schreiben und statt cut und cin gab es printf und scanf. Es musste C sein. Also schrieb ich das Programm mit printf und scanf um und sie sagt immer noch, dass Codeblocks Fehler werfen (ich habe Klassen immer noch als Aufgabe verlassen).

Hat C Klassen? Oder gibt es ein Missverständnis oder etwas?

    
Vanilla Face 25.04.2012, 12:38
quelle

6 Antworten

19

Nein, C hat keine Klassen. Es gibt jedoch Möglichkeiten, die objektorientierte Programmierung in C zu simulieren - eine schnelle Google-Suche sollte einige nützliche Ergebnisse liefern.

    
Stuart Golodetz 25.04.2012, 12:43
quelle
8

Nein, C hat keine Klassen an sich, nur C ++ (was damals mit "C mit Klassen" anfing ...). Aber Sie können die Standard-C-Bibliothek in C ++ - Code verwenden, auch wenn dies oft nicht als gute Praxis angesehen wird (wobei C ++ eigene Konstrukte höherer Ebene hat, z. B. cout vs printf ).

Sie können das Verhalten von Klassen, Vererbung und virtuellen Funktionen auch in C nachbilden, aber es lohnt sich nicht.

Sie sollten wahrscheinlich Ihren Ex-Klassenkameraden ein C-Programmierbuch kaufen / bekommen: -)

    
Péter Török 25.04.2012 12:41
quelle
2

C hat keine Klassen.

Aber man kann eine Klasse annähern, indem man statische globale Elemente als private Klassenmitglieder und statische Funktionen als private Elementfunktionen verwendet. externe Mitglieder als öffentlich. In diesem Fall könnte eine ganze Datei als Klasse betrachtet werden.

Wahrscheinlich ist das nicht was du willst.

    
phoxis 25.04.2012 12:41
quelle
2

C hat nicht das formale Konstrukt einer Klasse. Sie können Module mit Daten auf Modulebene erstellen, die Sie nach eigenem Ermessen nicht an anderer Stelle oder mit statischen Daten öffnen können, und Sie können Funktionen schreiben, um diese Daten abzurufen, festzulegen und anderweitig zu bearbeiten. Sie können sogar bis zu dem Punkt gehen, Funktionszeiger zu verwenden, um ähnliche Datentypen zu bearbeiten, als ob sie in einer Klasse wären.

Sie werden jedoch nicht durch Klassensemantik oder andere Regeln durch den C-Compiler geschützt, weil der C-Compiler nichts über Klassen weiß. Die Strukturierung Ihrer Daten ist jedoch sehr leistungsstark.

    
octopusgrabbus 25.04.2012 12:44
quelle
0

Ein klassischer Fall von widersprüchlichen Anforderungen scheint es: -)

Die Terminologie ihrer Anforderungen KLASSE, KONSTRUKTOR, METHODE sind alle C ++ - Terminologie, während keine von ihnen C-Terminologie ist (die nächste wäre wohl STRUCT, INITIALIZATION, FUNCTION ). Dein Freund ist hier etwas verwirrend. Ich bezweifle jedoch, dass ihr Lehrer etwas verwirrt, obwohl ...

    
Jens 25.04.2012 12:53
quelle
0

C hat keine Klassen, aber Sie können es mit Strukturen und Zeigern zu einer Funktion emulieren. C99 ist ein wenig (nur ein bisschen) basierend auf C ++, daher ist es einfach, Klassen mit C zu reproduzieren.

    
md5 25.04.2012 13:34
quelle

Tags und Links