제대로 초기화 된 개체의 배열을 만들기위한 것입니다.
기본 생성자가없는 클래스 C가 있습니다. 클래스 C의 개체 배열을 원합니다. 이러한 개체를 초기화하는 방법을 파악한 다음 D의 기본 생성자에서 C에 대한 인수를 제공하는 정적 메서드를 사용하여 C에서 클래스 D를 파생합니다.
#include <iostream>
using namespace std;
class C {
public:
C(int x) : mData(x) {}
int method() { return mData; }
private:
int mData;
};
void f() {
class D : public C {
public:
D() : C(D::clicker()) {}
private:
static int clicker() {
static int current = 22;
return current++;
}
};
D array[50] ;
cout << "This should be 33: --> " << array[11].method() << endl;
cout << "sizodf(C): " << sizeof(C) << endl;
cout << "sizeof(D): " << sizeof(D) << endl;
return;
}
int main(int, char **) {
f();
return 0;
}
간단하게하기 위해이 예제에서는 기본이 아닌 간단한 생성자와 컴파일 시간에 값이 알려진 경우를 사용합니다. 런타임에만 알려진 값으로 초기화 된 객체 배열을 원하는 경우에이 기술을 확장하는 것은 간단합니다.