Ensuite pour les problèmes de performances, il y a un autre très important que je ne voudrais appeler du code de la maintenabilité et évolutivité.
Si T est de la GOUSSE et de commencer préférant l'initialisation de la liste, alors si on a le temps T qui va changer à un non-type de POD, vous n'aurez pas besoin de changer quoi que ce soit autour de l'initialisation de façon à éviter le constructeur appelle parce qu'il est déjà optimisé.
Si le type T n'ont constructeur par défaut et un ou plusieurs défini par l'utilisateur des constructeurs et une fois que vous décidez de supprimer ou de masquer le défaut de l'une, puis si l'initialisation de la liste a été utilisé, vous n'avez pas besoin de code de mise à jour si votre définis par l'utilisateur constructeurs, car ils sont déjà mis en œuvre correctement.
Même avec const membres ou de référence, les membres, disons d'abord que T est défini comme suit:
struct T
{
T() { a = 5; }
private:
int a;
};
Ensuite, vous décidez de vous qualifier en tant que const, si vous souhaitez utiliser la liste d'initialisation depuis le début, alors ce n'était qu'un simple changement de ligne, mais ayant la T défini comme ci-dessus, il faut aussi creuser le constructeur définition de supprimer l'affectation:
struct T
{
T() : a(5) {} // 2. that requires changes here too
private:
const int a; // 1. one line change
};
Ce n'est pas un secret que l'entretien est beaucoup plus facile et moins sujettes à l'erreur si le code n'a pas été écrite par un "code de singe", mais par un ingénieur qui prend des décisions basées sur une considération plus profonde sur ce qu'il fait.