オブジェクトをどのようにstd::vector
割り当てますか?まるでstd::allocator::allocate
メモリのブロックを作成するために使用しているように見えますが、それからを呼び出すことはありませんstd::allocate::construct
。これは本当ですか?std::vector
メモリを割り当てるだけで、メモリ割り当てとしてオブジェクトを構築することはありませんか?
デフォルトのコンストラクターがない場合はどうなりますか?オブジェクトにデフォルトのコンストラクターがない場合、コンストラクターはどのように呼び出されますか?複数のパラメーターがある場合はどうなりますか?
たとえば、このコードにはデフォルトのコンストラクターはなく、std::allocatorで許可されています。
#include <vector>
using namespace std;
class A{
protected:
int m;
public:
explicit A(int a) : m(a) { }
};
int main(){
vector<A> test;
return 0;
}