• Keine Ergebnisse gefunden

verwendbar Eingabe durch

N/A
N/A
Protected

Academic year: 2021

Aktie "verwendbar Eingabe durch "

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 1

Wie bekommen Objekte ihre

Initialwerte?

(2)

Klassenbibliothek iostream

Durch

#include <iostream>

verwendbar Eingabe durch

istream

, Ausgabe durch

ostream

Drei standard Streamobjekte

cin: Daten von der Tastatur lesen

cout: Daten auf Bildschirm schreiben

cerr: Für Programmfehlermeldungen

(3)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 3

Ausgabe durch überladenen links- shift Operator <<

Eingabe durch überladenen rechts-

shift Operator >>

(4)

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

int main(void) {

int x;

cin >> x;

cout << "Hallo ..." << " x = " << x << endl;

return 0;

}

(5)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 5

Verwendung von namespaces jetzt erforderlich, um

Bezeichnerüberlappung zu

verhindern: hier

using namespace std;

Syntax genau beachten

(6)

Beide Operatoren sind erweiterbar Können für Dateiverarbeitung

verwendet werden

ifstream

verbindet Programm mit einer Datei für Eingabe

ofstream

verbindet Programm mit einer Datei für Ausgabe

fstream

verbindet Programm mit

einer Datei für Ein- und Ausgabe

(7)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 7

Ein- und Ausgabe Operationen im Hauptspeicher

Drei Objekttypen

istringstream ostringstream stringstream

(8)

Sehr einfach

Erster Operand ist der Stream

Zweiter Operand ist das ein- oder auszugebende Objekt

Das Ergebnis: ein Stream

Mehrere Operationen werden durch entsprechende shift

Operatoren verknüpft

(9)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 9

Defaultmässig ist der Typ des Objekts massgebend

Include-Datei

<iomanip>

Basis durch

setbase

ändern Für int -Typen:

Basis 10 ist default

hex

für Hexadezimal,

oct

für Oktal

Für Gleitkommatypen:

precision

ist aktuelle Präzision

Präzision ändern mit

setprecision

(10)

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

#include <iomanip>

using std::hex;

using std::dec;

using std::oct;

using std::setbase;

int main(void){

int n;

cout << "Bitte integer eingeben: ";

cin >> n;

cout << n << "in hex: " << hex << n << '\n'

<< dec << n << "in octal: " << oct << n << '\n'

(11)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 11

!

#include <iostream>

... //wie oben

#include <iomanip>

#include <cmath>

using std::ios;

using std::setiosflags;

using std::setprecision;

int main(void){

double x; x = sqrt(2.0);

int nachkst;

cout << setiosflags(ios::fixed)

<< "sqrt(2) mit versch. Praezis: " << endl;

for(nachkst = 0; nachkst < 10; nackkst++){

cout.precision(nachkst); cout << x << endl;

}

(12)

"

Wie normale C-Variablen werden Objekte während ihrer Entstehung initialisiert

Dafür gibt es einige Spezielle-

elementfunktionen. Diese heissen Konstruktoren

Sie werden durch ihre Parameter-

liste voneinander unterschieden

Sie haben keinen Rückgabetyp

(13)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 13

meineKlasse.h

class meineKlasse{

private:

int n;

public:

meineKlasse();

meineKlasse(int = 0);

void setn(int);

int getn();

};

(14)

meineKlasse.cc

#include "meineKlasse.h"

meineKlasse::meineKlasse() {

x = 0;

}

meineKlasse::meineKlasse(int num) {

n = num;

} ...

(15)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 15

Konstruktor

meineKlasse()

ohne Parameter ist der Standard-konstruktor

Konstruktor

meineKlasse(int num)

mit

Parameter ist der allgemeine Konstruktor Der Compiler erzeugt einen Default-

Konstruktor falls Konstruktoren nicht definiert sind

Der allgemeine Konstruktor hat einen Default-Wert von 0. Syntax genau

beachten!

(16)

"

Initialwerte können vor der

Konstruktorausführung angegeben werden

Reihenfolge der Initialisierungen ist die in der Klassendefinition (wichtig bei Abhängigkeiten)

Später bei Vererbung wichtig

In

cc

-Datei anzugeben

(17)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 17

meineKlasse.cc

meineKlasse::meineKlasse(int num) : n(num) {

cout << "n bereits initialisert" << endl;

}

(18)

Erlauben Initialisierungen von Klassen durch andere Klassen Genau wie man im C-Programm

int x = 5;

schreiben kann, kann man im C++-Programm

meineKlasse Objekt1 = Objekt2

schreiben

Natürlich muss die rechte Seite

bereits initialisiert sein

(19)

16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 19

Kopierkonstruktoren haben immer einen Parameter, nämlich die rechte Seite der Initialisierung

Statt diesen Parameter mit einem Zeiger zu übergeben, verwende man eine sog.

Referenz. Siehe Unten

Kopierkonstruktoren werden nicht bei Zuweisungen aufgerufen

Kopierkonstruktoren sind keine normalen

Konstruktoren!

(20)

#

bei Initialisierungen mit anderen Objekten

bei Parameterübergabe per Wert beim Übergabe des

Rückgabewerts in Funktionen

Referenzen

ÄHNLICHE DOKUMENTE

Für die Füllung einen trockenen Kartoffelbrei kochen, mit Salz und Pfeffer kräftig würzen, etwas Butter für die Geschmeidigkeit unterrühren und erkalten lassen.. In der

Am Tag vorher die Zwiebel vierteln, Lorbeerblätter, Hühnerteile mit Advieh, Salz und Pfeffer in einen Topf geben und gerade so mit Wasser bedecken (nicht zu viel Wasser

Hierbei versucht OCLC Research in sei- ner Rolle als Forschungsinstituti- on innerhalb von OCLC, innovati- ve internationale Entwicklungen seiner Partner im

Die Liste der Vorträge zeigt, dass die Themen zur Nachhaltigkeit der Landwirt- schaft auch in unseren Nachbarländern immer wichtiger werden.. Regionen, die bis heute für ihre

• Помогнете им на сите во Европа, без оглед дали ги познавааат или не класичните јазици, да го стекнат неопходното знаење за заедничките корени на

Die Kluft zwischen Ost und West zeigt sich mit Blick auf die strukturel- len Faktoren des europäischen Zusammenhalts.. Diese Faktoren erfassen die Verflechtung unter den Staaten

[r]

Da unter den beteiligten Mädchen viele Kinder mit Migrationshintergrund sind, von denen manche die deutschen Worte für die Radbestandteile nicht kennen, wird die Werkstattzeit