0

サイズ 100 の配列を宣言しました。string bin[100];各配列を として初期化する必要があります""。それらすべてを1行で初期化するにはどうすればよいですか? のようなものを試しましたが、うまくいきbin[] = "";ません。どんな助けでも大歓迎です。

デフォルトコンストラクタ

RandomString()
{
    input = "";
    //bin[] = "";
}
4

2 に答える 2

2

特別なことをする必要はありませんstring bin[100];std::string配列の各要素に対して、デフォルトのコンストラクターが呼び出されます。

配列が何らかのクラスのメンバーである場合は、メンバー初期化リストで初期化します。

struct SomeClass
{
    std::string bin[100];
    SomeClass() : bin() // You can initialize arrays with () in the mem-init list
    {
    }
};

*技術的には、mem-init リストに追加しなくてもデフォルトのコンストラクターが呼び出されますbin()が、それは良い習慣です (組み込みの型は初期化されないままになるため)。

C++ では、クラスのメンバーは初期化リストによって初期化されます。たとえば、次の例では、コードに違いがあります。

// First example
struct MyClass
{
    int i;
    SomeClass() : i(1)
    {
    }
};

// Second example
struct MyClass
{
    int i;
    SomeClass()
    {
        i = 1;
    }
};

最初の例でiは、初期化リストで初期化さ1れます。2 番目の例で1は、 がに割り当てられiます。上記のコードは、次のように考えることができます。

int i = 1; // First example

int i; // Second example
i = 1; 

組み込み型の場合int、両者の間に大きな違いはありませんが、メンバーが宣言されている場合など、状況によっては上記の違いが非常に重要になる場合がありますconst

struct SomeClass
{
    const int i;
    SomeClass()
    {
       i = 1; // Error!!
    }
};

上記の例では、const メンバーは初期化リストで初期化する必要があります。

于 2013-05-27T03:40:48.167 に答える
0

あなたの方法で、配列の最初の要素を初期化しました。デフォルトのctorはnull文字列に初期化されています。100 個の要素を初期化したい場合は、それぞれに対して同じことを行うだけです。

于 2013-05-27T04:27:46.083 に答える