以下のコードの出力は16です。なぜそうですか?クラスの配列の長さで初期化しなくてもサイズは16であり、2番目のコンストラクタで長さを初期化すると同じサイズ、つまり16です。テンプレートクラスのサイズ
#include <iostream>
#include <string>
using namespace std;
template <class T>
class array1{
T * arr;
int l;
public:
array1(){
arr = 0; l=0;
}
array1(int x){
l = x;
arr = new T[l];
}
~array1(){
delete[] arr;
}
void display(){
cout << "array1 is :"<<endl;
for (int i=0; i<l; i++)
cout << arr[i] << " ";
cout << endl;
}
};
int main()
{
array1<int> a1;
cout << "size of int arr is " << sizeof(a1);
return 0;
}
これはテンプレートとは関係がありません。通常のクラスでは同じことが起こります。 – Mat
なぜそれが16以外のものになるべきかについて私たちにあなたの前提を教えてもらえますか? –
あなたは何を期待しましたか? –