Breymann. C++ Einführung und professionelle Programmierung
Breymann. C++ Einführung und professionelle Programmierung Breymann. C++ Einführung und professionelle Programmierung
#ifndef quadrat_h #define quadrat_h #include"rechteck.h" class Quadrat : public Rechteck { // siehe Text public: Quadrat(const Ort &O, int seite) : Rechteck(O, seite, seite) {} // Definition der rein virtuellen Methoden // Bezugspunkt(), Flaeche(), Hoehe() werden geerbt virtual void zeichnen() const { GraphObj::zeichnen(); std::cout
Das Hauptprogramm ruft die Methoden der graphischen Objekte polymorph auf. Entscheidend ist nicht der (statische) Typ des Zeigers, sondern der polymorphe oder dynamische Typ, dass heißt, der Typ des Objektes, auf das der Zeiger verweist. Dasselbe gilt für Referenzen. #include"strecke.h" #include"quadrat.h" // schließt rechteck.h ein int main() { // GraphObj G; // Fehler! // Instanzen abstrakter Klassen gibt es nicht Rechteck R(Ort(0,0), 20, 50); Strecke S(Ort(1,20), Ort(200,0)); Quadrat Q(Ort(122, 99), 88); // Feld mit Basisklassenzeigern, initialisiert mit // den Adressen der Objekte und 0 als Endekennung GraphObj* GraphObjZeiger[] = {&R, &S, &Q, 0}; Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 335 zurück Ende
- Seite 283 und 284: Anfang eines neuen Blocks { nummeri
- Seite 285 und 286: 7.2.1 Klassenspezifische Konstante
- Seite 287 und 288: template class simpleStack { publi
- Seite 289 und 290: • Der Datentyp T steht für einen
- Seite 291 und 292: cout
- Seite 293 und 294: 7.3.2 Stack mit statisch festgelegt
- Seite 295 und 296: Nur die Deklarationen in einem Anwe
- Seite 297 und 298: 8. Vererbung • Eigenschaften, die
- Seite 299 und 300: Die Unterklasse erbt von der Oberkl
- Seite 301 und 302: Jedes Objekt ObjA vom Typ A (=abgel
- Seite 303 und 304: Klasse GraphObj #ifndef graphobj_h
- Seite 305 und 306: Die Entfernung zwischen 2 GraphObj-
- Seite 307 und 308: 8.1 Vererbung und Initialisierung I
- Seite 309 und 310: Vererbung von Zugriffsrechten Regel
- Seite 311 und 312: Oberklasse wird mit der Zugriffsken
- Seite 313 und 314: 8.3 Code-Wiederverwendung In den ab
- Seite 315 und 316: 8.4 Überschreiben von Funktionen i
- Seite 317 und 318: Am Beispiel der Flächenberechnung
- Seite 319 und 320: 8.5.1 Virtuelle Funktionen Wirkung
- Seite 321 und 322: cout
- Seite 323 und 324: GrOptr = &GrO; // Zeiger auf GrO ri
- Seite 325 und 326: Aus diesen Punkten lässt sich eine
- Seite 327 und 328: Es gibt Kreise, Rechtecke, Linien,
- Seite 329 und 330: Bezugspunkt ermitteln Ort Bezugspun
- Seite 331 und 332: } // leerer Code-Block double Laeng
- Seite 336 und 337: int i = 0; while(GraphObjZeiger[i])
- Seite 338 und 339: class Abgeleitet : public Basis { /
- Seite 340 und 341: ... immer wenn Basisklassenzeiger o
- Seite 342 und 343: #ifndef beschrif_h #define beschrif
- Seite 344 und 345: virtual void zeichnen() const { Rec
- Seite 346 und 347: 8.6.1 Namenskonflikte cout
- Seite 348 und 349: Subobjekt1: GraphObj Subobjekt2: Gr
- Seite 350 und 351: eschriftetesRechteck(const Ort &O,
- Seite 352 und 353: 8.6.3 Virtuelle Basisklassen und In
- Seite 354 und 355: class Unten: public Links, public R
- Seite 356 und 357: class Unten: public Links, public R
- Seite 358 und 359: class Rechteck { public: virtual vo
- Seite 360 und 361: Ohne Vererbung (Delegation): class
- Seite 362 und 363: 8.7.2 Der Teil und das Ganze „Tei
- Seite 364 und 365: } Bekanntenkreis.Hinzufuegen(&P); S
- Seite 366 und 367: 8.7.4 „Benutzt“-Beziehung Ein O
- Seite 368 und 369: ReturnDatentyp Klassenname::operato
- Seite 370 und 371: 1. Der Aufruf wird entsprechend der
- Seite 372 und 373: drei Fälle für gemischte Datentyp
- Seite 374 und 375: Ohne Typumwandlungskonstruktor Um g
- Seite 376 und 377: Mit Typumwandlungskonstruktor Wenn
- Seite 378 und 379: 9.1.2 Ausgabeoperator
- Seite 380 und 381: ✬ ✩ Vektor-Objekt start xDim (=
- Seite 382 und 383: Zuweisungsoperator Vektor& operator
Das Hauptprogramm ruft die Methoden der graphischen Objekte polymorph<br />
auf. Entscheidend ist nicht der (statische) Typ des Zeigers, sondern<br />
der polymorphe oder dynamische Typ, dass heißt, der Typ des Objektes,<br />
auf das der Zeiger verweist. Dasselbe gilt für Referenzen.<br />
#include"strecke.h"<br />
#include"quadrat.h"<br />
// schließt rechteck.h ein<br />
int main() {<br />
// GraphObj G; // Fehler!<br />
// Instanzen abstrakter Klassen gibt es nicht<br />
Rechteck R(Ort(0,0), 20, 50);<br />
Strecke S(Ort(1,20), Ort(200,0));<br />
Quadrat Q(Ort(122, 99), 88);<br />
// Feld mit Basisklassenzeigern, initialisiert mit<br />
// den Adressen der Objekte <strong>und</strong> 0 als Endekennung<br />
GraphObj* GraphObjZeiger[] = {&R, &S, &Q, 0};<br />
<strong>Breymann</strong> <strong>C++</strong>, c○ Hanser Verlag München<br />
Inhalt ◭◭ ◭ ◮ ◮◮ 335 zurück Ende