2016-10-10 1 views
0

C++ 배열의 개념을 이해하는데 약간의 문제가 있습니다.C++ 객체 배열 초기화

  1. 저의 임무는 다음과 같습니다. 여기서 알 수 있듯이 이것은 [크기] Object1 객체에 대한 힙에 공간을 생성 할뿐만 아니라 모든 객체도 초기화합니다. 누군가 힙에서 정확히 무슨 일이 일어 났는지 설명하고 여기에 쌓아 올릴 수 있습니까?

    오브젝트 1의 생성자는 다음 코드에서와 같이 매개 변수를 촬영 한 경우
    class Object1 
    { 
        Private: 
        int dummy; 
        Public: 
        Object1(); 
    }; 
    
    Object1::Object1() 
    { 
        dummy = 1; 
    } 
    
    class Foo 
    { 
        private: 
        Object1 * myObject; 
    
        public: 
        Foo(int size); 
    }; 
    
    Foo::Foo(int size) 
    { 
        myObject = new Object1[size]; 
    } 
    
  2. , 다음 무엇을, 스택 및 힙에 다른 어떤 일이 일어날까요? object1의 각 인스턴스에 매개 변수를 보내지 않으므로 모든 객체를 초기화하거나 공간을 만듭니 까?

    class Object1 
    { 
        Private: 
        int dummy; 
        Public: 
        Object1(int myInt); 
    }; 
    
    Object1::Object1(int myInt) 
    { 
        dummy = myInt; 
    } 
    
  3. 나는 아래 어딘가에서 코드를 보았습니다. 이 경우 무슨 일이 일어나며 위의 경우와 어떻게 다른가요?

    myclass *array[10]; 
    for (int i = 0 ; i != 10 ; i++) { 
        array[i] = new myclass(); 
    } 
    

나는 할당을 완료했지만, 그냥 내가 뒤에서 무슨 일이 일어나고 있는지 이해하도록 노력하고 있어요.

도움을 주셔서 미리 감사드립니다.

답변

0

클래스는 기본 생성자가없는 경우, 당신은 사용할 수 없습니다 :

myObject = new Object1[size]; 

차이

myObject = new Object1[size]; 

myclass *array[10]; 
for (int i = 0 ; i != 10 ; i++) { 
    array[i] = new myclass(); 
} 

첫 번째

사이 하나는 size 개의 개체를 할당하고에있는 개체의 배열에 대한 포인터를 저장합니다..

두 번째 것은 10 개의 개체를 할당하지만 10 개의 포인터가 있습니다. 각 포인터는 동적으로 할당 된 객체 하나만 가리 킵니다.