Kommentare zu häufig geäußerten Irrtümern über C++. (), FUM, Seite 721407
https://www.purl.org/stefan_ram/pub/c++_fum_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Verbreitete Irrtümer über C++

Die ist eine FUM  (frequently uttered misconceptions ) für C++. Sie gibt häufig vorkommende Irrtümer  über C++  wieder und stellt sie richtig.

void main

Irrtum 0: „Die Funktion "main" darf mit "void main" definiert werden.“

Der Ergebnistyp "int" wird in der C++ -Norm für "main" durch “It shall have a return type of type int ” ausdrücklich verlangt.

An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. 

ISO/IEC 14882:1998(E), 3.6.1, p2

Einzelne C++ -Implementationen mögen es tolerieren, wenn die Methode "main" mit dem Ergebnisttyp "void" definiert. Trotzdem ist solch ein Programm kein korrektes C++ -Programm.

„Ich glaube der einzige Grund um auf 'int main' zu bestehen, besteht darin, ein Mittel zu haben, um definitiv schlechte Bücher auf einem Blick von möglicherweise nicht so schlechten zu unterscheiden.

Wenn ein Autor 'void main()' schreibt, kann nicht erwartet werden, daß er viel Wert auf weniger offensichtliche, aber wichtigere, Details der Sprache legt.

Wenn er andererseits schreibt 'int main()', könnte er ein hinreichender Pedant und/oder Glückspilz sein, um den Rest seines Buches richtig hinzukriegen. ;-) “

André Pönitz, im Usenet, <b9at48$snc$4@narses.hrz.tu-chemnitz.de>, aus dem Englischen übersetzt von Stefan Ram 

shall 

Irrtum 1: „Die Norm verwendet bei der Festlegung des Ergebnistyps von 'main' nur ‚shall ‘ und nicht ‚must ‘, deswegen ist dies nur eine ‚sollte‘-Bestimmung.“

Die ISO -Richtlinien “Rules for the structure and drafting of International Standards ” zu Stil und Interpretation von ISO -Normen geben in Punkt 2.1 vor, daß “shall ” zur Kennzeichnung einer absoluten Pflicht (“has to ”) dient.

http://lhc-proj-qawg.web.cern.ch/lhc-proj-qawg/LHCQAP/isorec.pdf

Auch das bekannte Online-Wörterbuch LEO  übersetzt “the insurance shall be contracted ” beispielsweise mit „die Versicherung muß  abgeschlossen werden“.

Anweisungen und Semikolons

Irrtum 2: „Jede Anweisung in C++  endet mit einem Semikolon.“

„Anweisung“ heißt auf Englisch “statement ”.

Die rechte Seite der Produktionsregel für das Nichtterminalsymbol statement  in der C++ -Norm hat acht Möglichkeiten. Es gibt so gesehen also acht verschiedene Arten von Anweisungen.

statement 〉 ::=
labeled-statement 〉 |
expression-statement 〉 |
compound-statement 〉 |
selection-statement 〉 |
iteration-statement 〉 |
jump-statement 〉 |
declaration-statement 〉 |
try-block 〉.

Der Irrtum zeigt, daß der Autor die Bedeutung des Begriffs „Anweisung“ (“statement ”) in C++  nicht kennt.

printf

Irrtum 3: „In C++  kann genauso gut "#include <stdio.h>" und "printf" wie "#include <iostream>", "#include <ostream>" und "::std::cout <<" verwendet werden.“

Die C++ -Norm definiert 18 Köpfe für Fähigkeiten der C-Standardbibliothek. Dazu gehört auch "<cstdio>" als Entsprechung des C -Kopfes "<stdio.h>". Im Anhang D5  wird auch der Kopf "stdio.h" für C++  bereitgestellt, doch nur zur Kompatibilität mit C und nicht für neu geschrieben C++ -Programme. In einer Fußnote wird klargestellt, daß die neuen Köpfe empfohlen  sind.

The ".h" headers dump all their names into the global namespace, whereas the newer forms keep their names in namespace std. Therefore, the newer forms are the preferred forms for all uses except for C++ programs which are intended to be strictly compatible with C. 

ISO/IEC 14882:1998(E), 17.4.1.2, p2, Fußnote 160)

Damit könnte in C++  der Kopf "<cstdio>" eingebunden werden und dann die Funktion "::std::printf" verwendet werden. (Der Namensraum "::std" muß dann ausdrücklich angegeben werden.)

In neu geschriebenen C++ -Programmen werden aber in der Regel die C++ -Ausgabeoperatoren verwendet, weil diese sich viel besser mit dem Typsystem von C++  vertragen und die alten C -Funktionen auch die fehleranfälligen Formatierungsspezifizierer beinhalten, die man gerne vermeidet.

Obwohl C++  also einige alte C -Programme mit "#include <stdio.h>" und "printf" akzeptiert, empfiehlt die Norm jedoch die Form "#include <cstdio>" und "::std::printf". Die führenden Lehrbuchautoren und C++ -Programierer verzichten bei neuen C++ -Programmen ganz auf die alte C -Bibliothek und verwenden die C++ -Einrichtungen für die Ein- und Ausgabe.

struct

Irrtum 4: „In C++  wird mit »struct« keine Klasse, sondern eine Struktur spezifiziert.

In C++  hat »struct« am Anfang eines Klassenspezifizierers dieselbe Bedeutung wie »class«—abgesehen davon, daß Einträge bei Verwendung von »struct« als »public« gelten, wenn keine andere Sichtbarkeit für sie angegeben wird. Etwas wie eine „Struktur“ gibt es in C++  nicht, wenn man nicht bestimmte Klassen so bezeichnen will.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721407 stefan_ram:721407 {$keywords_c++}, Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721407, slrprddef721407, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c++_fum_de