コンストラクタで引数1個を持つオブジェクトの配列の初期化(長いよ


class A
{
public:
    A(int n){};
};

int main()
{
    A a[3] = {1, 2, 3};

    return 0;
}

記憶の奥底で、できた…よなぁ…。 なんて思いつつコンパイルしてみたら本当にできてちょっとびっくり。^^;

ぱっと見で微妙に見づらい感があるかもしれませんが…1つの有効な文法のひとつですから、使えるときは使った方が良いかなーとか思ってみたり。



わかりやすさであれば…


class A
{
public:
    A(int n){};
};

int main()
{
    A a[3] = {A(1), A(2), A(3)};

    return 0;
}

↑こっちの方が良いかもしれませんが、コピーコンストラクタが発動される可能が強いよなぁ〜…なんて思うとちょぃと気分的に微妙な感じに。

んまぁ、コンストラクタに2つ以上引数がある場合は、この方法しか(多分)取れませんけれど…