ods::array<int> arr(4);と宣言すると、arrという要素数4の配列が確保されますが、 配列要素の初期化はどこで行われているのでしょうか。 全要素が0で初期化されているようなので 気になりました。
template<class T> array<T>::array(int len, T init) { length = len; a = new T[length]; for (int i = 0; i < length; i++) a[i] = init; }の
a = new T[length];の行で,領域が確保されるのですが,C++言語では配列を確保する時はデフォルトコンストラクタ(引数をとらない コンストラクタ)が呼ばれます.以下の例では,
------ #include <iostream> class A{ public: A() { std::cerr << "A() is called" << std::endl; } }; int main(){ A b[10]; return 0; } ------- [実行例] bash-3.2$ g++ t.cc bash-3.2$ ./a.out A() is called A() is called A() is called A() is called A() is called A() is called A() is called A() is called A() is called A() is called ----------となりますね.intのデフォルト値は,
--------- int main(){ int i=int(); std::cerr << i << std::endl; return 0; } ---------を実行すると
0となるように,0なので
ods::array<int> arr(4);で確保される要素は0になります
なお,C++言語ではなくC言語の場合は配列は明示的な初期化をおこなわない限り 値は不定になります(グローバル変数の場合は0でクリアされる).C言語を使う時 は注意してください.
cd mis2を済ませてから,
ruby vote.rb 選択肢番号のように使います.