Gibt es einen Unterschied zwischen Demo1 und Demo2 im folgenden Code?Gibt es einen Unterschied zwischen "my_constructor: variable (x)" und "this.variable = x" im Konstruktor?
#include <iostream>
class Base {};
class Demo1 : public Base {
public:
Demo1() : instance_variable(5) {
}
int instance_variable;
};
class Demo2 : public Base {
public:
Demo2() {
this->instance_variable = 5;
}
int instance_variable;
};
int main(int argc, char **argv)
{
Demo1 a;
Demo2 b;
std::cout << "a.instance_variable: " << a.instance_variable << std::endl;
std::cout << "b.instance_variable: " << b.instance_variable << std::endl;
return 0;
}
sah ich die erste Schreibweise in einem Buch, das ich gerade lese, und ich bin nicht sicher, ob die beiden gleich sind oder wenn Demo1 feine Unterschiede hat, sollte ich bewusst sein.
Ich finde die zweite viel lesbarer, da ich von einem Java/JavaScript-Hintergrund komme, also bin ich gespannt, ob ich "Demo1" durch "Demo2" ersetzen kann, ohne die Bedeutung des Codes zu ändern.
Auch, was ist der Ausdruck "Konstruktor: field (x) {}" genannt?
Ich schlage vor, Sie lesen Sie diese: http://stackoverflow.com/questions/6822422/c-where-to-initialize-variables-in-constructor – Meraj99
Initialisiererliste –
@SauravSahu Dank, dass es! Aber ist es gleichwertig? Sende die Antwort, damit ich sie annehmen kann. – Dmitry