Betrachten Sie die folgende (vereinfachte) Situation:Können Mitgliedsvariablen verwendet werden, um andere Mitglieder in einer Initialisierungsliste zu initialisieren?
class Foo
{
private:
int evenA;
int evenB;
int evenSum;
public:
Foo(int a, int b) : evenA(a-(a%2)), evenB(b-(b%2)), evenSum(evenA+evenB)
{
}
};
Wenn ich Foo wie folgt instanziieren:
Foo foo(1,3);
dann Evena 0, EVENB 2 ist, wird aber evenSum bis 2 initialisiert werden?
Ich versuchte dies auf meiner aktuellen Plattform (iOS) und es scheint zu funktionieren, aber ich bin mir nicht sicher, ob dieser Code portabel ist.
Danke für Ihre Hilfe!
Dies ist eine der gefährlichen Ecken in C++. – iammilind
Codepad ist ein großartiger Ort, um solche Dinge zu überprüfen: http://codepad.org/uFgZpkwN –
@Agent_L: Das wird Ihnen nicht sagen, ob der Code tragbar ist. –