同僚が書いたコードを読んでいて、コンストラクター構文を使用してプリミティブ型変数を初期化することに出くわしました。つまり、以下のようなものです:
#include <iostream>
int main()
{
using namespace std;
// initialized using assignement syntax (copy initialisation)
int titi = 20;
cout << "titi=" << titi << "\n"; // got 20 in titi, it works
// initialized using constructor syntax (direct initialization)
int toto(10);
cout << "toto=" << toto << "\n"; // got 10 in toto, it works
}
私の自然な傾向は、代入構文に固執することです。これは歴史的なものであり、簡単なことではなく、明らかな互換性の問題があるためです (コンストラクター構文は有効な C として認定されません)。
それでも、2 つの構文の間に他に明白でない違いがあるのだろうか? それらが実際に同じことを意味している場合は?また、将来のメンテナンス/コードの進化の問題や可読性の問題などを考慮して、いずれかの形式の長所と短所は何ですか?