10 C++ Testfragen
-
audacia schrieb:
(Allerdings wäre es vielleicht besser, einen begründeten, aber wertungslosen Vergleich zu fordern.)
Hab ich mir auch überlegt, aber dann würde vielleicht vielen nur ein Argument einfallen. Man kann schliesslich auch 3 Vorteile nennen und begründen.
Aber ich finde deine Liste recht gut, zum Teile habe ich auch Mühe damit.
-
audacia schrieb:
5. Was passiert, wenn dieses Programm ausgeführt wird?
#include <iostream> struct Base { virtual const char* getClassName (void) = 0; // abstrakte Basisklasse Base (void) { std::cout << "Constructing a '" << getClassName () << "' object" << std::endl; } virtual ~Base (void) { std::cout << "Destroying a '" << getClassName () << "' object" << std::endl; } }; struct Derived : Base { virtual const char* getClassName (void) { return "Derived"; } }; int main (void) { Derived d; Base* b = &d; std::cout << "This is a " << b->getClassName () << std::endl; }
Nichts, denn (mit einem vernünftigen Compiler) linkt es erst gar nicht.
Felix
-
Phoemuex schrieb:
Nichts, denn (mit einem vernünftigen Compiler) linkt es erst gar nicht.
Aah, richtig.
Also eine kleine Indirektion mehr, und schon geht es. Ich trage es oben nach.
-
audacia schrieb:
2. Welche Schwachstellen fallen in folgender Methode auf, und wie sollte man sie am besten beheben?
#include <cstdio> struct data_t { int val1; int val2; double val3; void loadFromFile (const char* filename) { static const char* signature = "MYDATAFORMAT"; std::FILE* file = std::fopen (filename, "rb"); if (!file) throw "File not found (or so)"; unsigned siglen = std::strlen (signature); char* sigbuf = new char[siglen]; std::fread (sigbuf, std::strlen (signature), 1, file); if (std::strcmp (signature, sigbuf) != 0) throw "Unknown file format!"; std::fread (this, sizeof (data_t), 1, file); std::fclose (file); delete sigbuf; } };
Alles neu schreiben.
-
- for-Schleife in while-Schleife umwandeln
- Nicht-rekursive Lösung in rekursive umwandeln
- Bit-Logik-Aufgabe stellen
- String-Klasse entwerfen lassen
- Template-Klasse entwerfen lassen
- try-catch-throw
- Singleton-Klasse schreiben lassen
- Beispiele aus STL, vor allem algorithm http://www.cplusplus.com/reference/algorithm/
...
-
waaaa schrieb:
Alles neu schreiben.
Schon klar.
Aber eine wichtige Kompetenz ist, sowohl Schwachstellen als auch Ausbesserungsmöglichkeiten konkret benennen zu können.
-
audacia schrieb:
unsigned siglen = std::strlen (signature); // Dieser Fehler ist wohl nicht auszumerzen, // oder warum muß er immer wieder gemacht werden?
Siehe Code
-
ProggaJens schrieb:
0.wieso fange ich bei 0 an zuzählen statt bei 1?
1.kann ich c++ auch auf einen mac problem los benutzen?
2.steht int für international? :p
3.kam c++ vor c?
4.welche person hat c++ geschaffen?^^
5.kannst du mir sagen wie groß ein array maximal ist?^^
6.gehören true und false in c++ zur variablen klasse int, double oder bool?
7.was ist hier dran falsh "double = 1,0;" ?
8. heißt es "if" und "else" oder "if" und "or"
9."int main()" oder "int main(int nNumberofArgs, char pszArgs[])" ?^^*Man sollte hier aber noch erwähnen, dass dies keine "entweder oder" Frage ist.
-
Scherzkeks schrieb:
Man sollte hier aber noch erwähnen, dass dies keine "entweder oder" Frage ist.
Ich glaube sowieso nicht, dass diese 10 Fragen ernst zu nehmen sind...
-
Noch eine schöne Frage:
Welche Ausgabe hat folgendes Programm?#include <iostream> void f( int a[5]) { std::cout << sizeof(a) << std::endl; } int main() { int a[5] = {}; f( a); return 0; }
(bevor sich jemand beschwert, die Antwort muss keine absolute Größe sein)