Tag: ctor-initializer
Konstruktorinitialisierungsliste In C ++ ist die Initialisierungsliste die Stelle, an der die Initialisierung des Objekts stattfinden soll. Hier werden die Konstruktoren für Basisklassen und Member aufgerufen. Mitglieder werden in derselben Reihenfolge initialisiert, in der sie deklariert sind, und nicht so, wie sie in der Initialisierungsliste erscheinen.
3
Antworten
Angenommen ich habe: //MyClass.h class MyClass { public: MyClass(); private: Something *something_; } //MyClass.cpp MyClass::MyClass() { something_ = new Something(); } Sollte ich initialisieren something_ auf NULL (oder 0) im Konstruktor mit Initialisierungsliste den Konstruktor MyClass? Oder
4
Antworten
Ein bisschen eine grundlegende Frage, aber ich Schwierigkeiten beim aufspüren eine definitive Antwort. Sind Initialisierer-Listen der nur Methode zum initialisieren der Klasse Felder in C++, abgesehen von der Zuordnung der Methoden? In den Fall bin ich mit
5
Antworten
Warum dies so: #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member(n) {} const string& member; }; int main() { Sandbox sandbox(string("four")); cout << "The answer is: " << sandbox.member
6
Antworten
Vorstellen, ich habe eine C++ - Klasse " Foo " und eine Klasse Bar, die erstellt werden, mit einem Konstruktor, in dem ein Foo-Zeiger übergeben wird, und dieser Zeiger soll bleiben unveränderlich in der Bar-Instanz-Lebenszyklus. Was ist
1
Antworten
Habe ich den Versuch gestartet, aus der C++11 standard, und ich fand diese Frage, die beschreibt, wie rufen Sie Ihren ctor von einem anderen ctor in der gleichen Klasse zu vermeiden, dass die init-Methode oder dergleichen. Jetzt
12
Antworten
Vor kurzem habe ich ein Beispiel gesehen, wie die folgenden: #include <iostream> class Foo { public: int bar; Foo(int num): bar(num) {}; }; int main(void) { std::cout << Foo(42).bar << std::endl; return 0; } Was bedeutet diese
6
Antworten
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Ich glaube, der Grund ist, dass arrays können initialisiert werden, nur mit = syntax:
5
Antworten
Warum dies so: #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member(n) {} const string& member; }; int main() { Sandbox sandbox(string("four")); cout << "The answer is: " << sandbox.member