Quote:
Originally Posted by Tasiro
Das kann ich leider nicht bestätigen...
Und müsste es nicht heißen: "Dürfte ich erfahren, womit du arbeitest?"
|
Da du mir leider nicht gesagt hast welchen Compiler du nutzt kann ich dein Problem leider nicht nachvollziehen. Aber das ist auch nicht so wichtig.
Und meine Frage war durchaus korrekt formuliert. Vielleicht ein wenig umgangssprachlich, aber grammatikalisch 100% ok.
Quote:
Originally Posted by Tasiro
Worauf kommen?
|
Auf solch einen merkwürdigen Quellcode. Hat eher was von C mit Klassen als von C++. Zumal der auch noch viele starke negative Aspekte hat.
Quote:
Originally Posted by Tasiro
Wenn ich jemandem riet, das so zu machen, nur zu, sag es mir. Ich kann mich daran leider nicht erinnern. Und das sollte eigentlich nur zeigen, dass es (theoretisch) mit sehr wenig Aufwand möglich sei... Jedenfalls wolltest du ein besseres Beispiel vorlegen, es wäre interessant zu erfahren, was du alles änderst.
|
Nein, du hast mich falsch verstanden. Habe das auch unglücklich ausgedrückt. Es ging mir darum, dass ich nicht nachvollziehen kann, wie man sich solchen Code ausdenken kann und dann davon ausgeht, dass ein Anfänger das so nutzt und darauf dann entsprechend eine Antwort formuliert. Da kommt kein anderer Mensch drauf, wie du zu dieser Antwort gekommen bist.
Aber das ist auch nicht so wichtig. Ging ja ursprünglich darum, dass ich deine Aussage nicht verstanden habe, da ich dein Beispiel nicht kannte.
Quote:
Originally Posted by Tasiro
Und zu "C mit Klassen"... Objektorientierung ist nicht immer die beste Lösung eines Problemes und Klassen sollten nicht allem aufgezwungen werden. Daher ist es mir ganz lieb, dass es nur ein "C mit Klassen" ist und kein Java oder C# oder was es da sonst noch alles gibt.
|
Das stimmt durchaus, jedoch ist dies nicht so ein Beispiel. Alleine schon weil das nicht exception-safe ist und somit Speicher leaken kann.
Des Weiteren bin ich mir nichteinmal sicher was die Funktion genau machen soll. Sie blockiert solange den Stream, wie dieser gut ist. Okay, aber bei std::cin ist dein Programm ständig am Einlesen, vorrausgesetzt du hast den Stream nicht umgelenkt.
Erscheint mir nicht wirklich sinnvoll. Aber der Punkt ist auch nicht so wichtig, ist wohl ein recht schnell heruntergetipptes Beispiel.
Wie ich es spontan gemacht hätte:
Code:
std::string einlesen(std::istream& stream = std::cin)
{
std::string buffer;
std::stringstream ss;
while(stream >> buffer)
ss << buffer;
return ss.str();
}
Exception-safe, lesbarer, erweiterbarer, C++. Und das würde ich so ganz spontan schreiben; das geht bestimmt nochmal deutlich besser, wenn man sich ein paar Gedanken macht.
Quote:
Originally Posted by Tasiro
"using namespace" ist schlecht? Soll ich in Zukunft immer schreiben: "_STD cin << ::std::hex << meine_Zahl << std::endl;"? Ist das wirklich nötig?
|
Ja, in dem von dir geschriebenen Beispiel ist das nötig. Und wenn du erst gar keine Probleme mit so einem Käse haben willst, dann gewöhnst du dir das gleich an. Ich schreibe überall std:: (so viel mehr Schreibarbeit ist das nicht) und hatte deswegen noch nie solche Probleme.
Kommt immer darauf an wie schwer man es sich selber macht.
Quote:
Originally Posted by Tasiro
Es kann (und wenn du möchtest, auch könnte) durchaus sinnvolle Beispiele für die Verwendung von mehreren gleichen Operatoren mit gleichen Operanden geben, etwa für verschiedene Mengenklassen, welche Mengen ohne identische Duplikate verwalten, wo es aber unterschiedliche Verwendungen des Operators + gibt. So kann der eine Operator einen Fehler erzeugen, der andere hingegen einfach den alten Wert überschreiben. Dabei wird freilich angenommen, dass die Identität nicht durch Adressenvergleich geprüft wird aufgrund der Möglichkeit der Mehrfachvererbung in C++. Derartiges kann natürlich auch mit anderen Operatoren ähnlich geschehen.
|
Gut. Ich muss leider gestehen, dass ich zu dem Jahrgang gehöre, dem die Mengenlehre in der Schule verwehrt geblieben ist, weshalb sich mir das Beispiel nicht erschließt. Zumal operator+ einer anderen Logik zugrunde liegt als operator==. operator== überprüft zwei Objekte auf Gleichheit und dazu sollte es immer nur eine sinnvolle Möglichkeit geben. Aber ich lasse mich hier gerne eines Besseren belehren, da ich, wie bereits gesagt, die Mengenlehre niemals beigebracht bekommen habe.