Si consideri il seguente (semplificato) Situazione:È possibile utilizzare le variabili membro per inizializzare altri membri in un elenco di inizializzazione?
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)
{
}
};
Quando ho instanciate Foo come questo:
Foo foo(1,3);
poi evena è 0, è evenB 2, ma sarà evenSum essere inizializzato a 2?
Ho provato questo sulla mia attuale piattaforma (iOS) e sembra funzionare, ma non sono sicuro se questo codice è portatile.
Grazie per il vostro aiuto!
Questo è uno degli angoli pericolosi in C++. – iammilind
Codepad è un ottimo posto per verificare queste cose: http://codepad.org/uFgZpkwN –
@Agent_L: Questo non ti dirà se il codice è portatile. –