Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » c++ Triviale Fragen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.01.2018, 15:25 Uhr
ume



a) Was versteht man unter einer Forward Deklaration (Vorwärts Deklaration)?
b) Ist extern int a; eine Deklaration oder Definition
c) Wie verhindert man mehrfache Inklusion (multiple include) von Header-Dateien? Geben Sie ein kurzes Beispiel an.
d) Der C-Style Cast wird in C++ durch vier C++-Style Cast-Funktionen ersetzt. Wie heißen diese?
e) Warum ist es wichtig für Polymorphe Klassen auch einen virtuellen Destruktor zu definieren?
f) Was ist der Unterschied zwischen class und struct in C++?



Antworten:

Bitte um verbesserungen

a) Keine passende antwort gefunden
b) Glaube das war nur eine Deklaration
c) -z.b #ifndef INCGUARD_HEADER1
#define INCGUARD_HEADER1 (da der obere sonst nicht “definiert” ist)
#include „header2.hpp“

oder pragma once

d) dynamic, static, const, reinterpre
e) K.A.
f) Es gibt keinen , müssten beide gleich das gleiche sein.


LG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.01.2018, 20:09 Uhr
ao

(Operator)


b), c) und d) sind richtig beantwortet.

a) und f) sind trivial zu googeln, das machst du bitte selber. Wenn du das, was du findest, nicht verstehst, dann frag nochmal nach.

e) Der virtuelle Destruktor sorgt dafür, dass, wenn das Objekt nur über einen Basisklassenzeiger referenziert wird, trotzdem die ganze Klassenhierarchie zerlegt wird und nicht nur das Basisklassen-Objekt. Beispiel:


C++:
#include <iostream>

class Base
{
public:

//    virtual
    ~Base () { std::cout << "~Base" << std::endl; }
    
};

class Derived : public Base
{
public:
    ~Derived () { std::cout << "~Derived" << std::endl; }
};


int main ()
{
    Base * b = new Derived ();
    
    delete b;
}




Ist das "virtual" in class Base aktiv (also der Destruktor virtuell), dann erzeugt der Aufruf delete b; die Ausgabe:
~Derived
~Base
weil nacheinander die Destruktoren von Derived und Base aufgerufen werden.

Ist der Destruktor nicht virtuell, dann erhält man nur die Ausgabe
~Base
Der Derived-Teil des Objekts wird also nicht abgeräumt, und wenn Derived Resourcen belegt (Speicher, Dateien, Sockets etc.), dann werden diese nicht wieder freigegeben.

Klar?

Dieser Post wurde am 14.01.2018 um 20:12 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: