①
#include <iostream>
using namespace std;
class hoge{
int a;
public:
hoge(){}
hoge(int v_a){
a = v_a;
}
int getter(){
return a;
}
};
int main(){
hoge *hg = new hoge[100] ;
for(int i=0; i<100; i++)
hg[i] = hoge(i);
for(int i=96; i<100 ; i++)
cout << hg[i].getter() << endl;
delete[] hg;
return 0;
}
#include <iostream>
using namespace std;
class hoge{
int a;
public:
hoge(){}
hoge(int v_a){
a = v_a;
}
int getter(){
return a;
}
};
int main(){
hoge *hg[100];
for(int i=0; i<100; i++)
hg[i] = new hoge(i);
for(int i=96; i<100 ; i++)
cout << hg[i]->getter() << endl;
for(int i=0;i<100;i++)
delete hg[i];
return 0;
}
しかしよく考えれば
①は動的配列の確保
②は動的変数へのポインタの配列
だったんですね。
②の方が自然にコンストラクタを呼べて、使いやすいのですが、①を使った方が良いのでしょうか?
本を読んでも、どのサイトに行っても②の方法が使われていなくて不安です。
何か問題がある方法なのでしょうか。
また、もし②の方法を使うべきではないとすれば、コンストラクタで動的確保なんてことはできなくなりますよね?
質問というより、確認のようなものですが、アドバイスいただけると助かります。
どうぞよろしくお願いします