Modernes C++ programmieren

Okt 23, 2024

lst-0501-book.cpp

// https://godbolt.org/z/scqTWvhsv 
class Auto { };
  class VwBulli : public Auto { };
  class Ente : public Auto { };
void lassFahren(Auto wagen) { }   //             (ERR)  Wertparameter kopiert nur Basisklasse
void lassBremsen(Auto &wagen) { } // Referenzparameter
void lassHupen(Auto *wagen) { }   // Übergabe als Zeiger
int main() {
    VwBulli bulli{  };            // automatische Variable
    Auto *ente = new Ente{  };    // dynamisch verwaltet
    lassFahren(bulli);            //             (ERR)  wird zum Auto kopiert
    lassFahren(*ente);            //             (ERR)  wird zum Auto kopiert
    lassBremsen(bulli);           // bleibt VwBulli
    lassBremsen(*ente);           // bleibt Ente
    lassHupen(&bulli);            // bleibt VwBulli
    lassHupen(ente);              // bleibt Ente
}