C-Programmierung

Unterschied von C und C++ am Beispiel der Listen-Datenstruktur

Beispiel zum Unterschied von C Strukturen und C++ Klassen | | Boilerplate Code

Ein Beispiel zum Unterschied von Strukturen (C) und Klassen (C++) anhand der Implementierung einer Listen-Struktur:

Zwei Listen in C:

/* definitions */
typedef struct node *node_ptr;

/* prototypes */
void insert(node_ptr *ptr, const T &element);
node_ptr search(node_ptr ptr, const T &element);
void clear(node_ptr ptr);

int main()
{
   /* initialization */
   node_ptr root1=NULL;
   node_ptr root2=NULL;

   insert(root1, element1);
   insert(root2, element2);

   ...

   /* deallocation */
   clear(root1);
   clear(root2);

   return(0);
}


Zwei Listen in C++:

class List
{
   // member definitions
   typedef struct node *node_ptr;

   // member variables
   node_ptr root;

   // constructor (initialization)
   List() {root=NULL;}

   // destructor (deallocation)
   ~List() {clear();}

   // member prototypes
   void insert(const T &element);
   node_ptr search(const T &element);
   void clear();
};

int main()
{
   List list1, list2; // implicit initialization via ctor

   list1.insert(element1);
   list2.insert(element2);

   ...

   return(0); // implicit deallocation via dtor
}

Was können C++ Klassen sonst noch?

  • Eine Methode kann mit Funktionsrumpf (Implementierung) oder ohne Funktionsrumpf (d.h. nur als abstrakter Prototyp) spezifiziert werden → Interfaces.
  • Eine Methode kann auch als Operator realisiert sein → Operator Overloading.


Beispiel zum Unterschied von C Strukturen und C++ Klassen | | Boilerplate Code

Options: