2014-11-15 5 views
-1

예를 들어, 나는 이런 식으로 선언 된 벡터를 가지고 :객체에 대해 언제 new를 사용하고 포인터를 언제 사용해야합니까?

vector<Shapes> *ShapeVector; 

내가 '새를 선언하는 것, 모양 객체를 가지고, 그리고 다른 모양이 서로 다른 크기의 that're에 액세스 할 수있게하려면 '필요하지 않습니까? 그러면 포인터는 어떨까요?

나에게 포인터는 액세스 할 다른 주소를 가리 킵니다. 그래서 포인터가 필요할까요?

지금까지 객체를 만들고 배열을 저장하는 데 다음 코드를 사용했습니다. 그 후, 개체를 벡터 자체에 저장하려고합니다.

int tempx[100],tempy[100]; 
    for (int i = 0; i < 4;i ++) 
    { 
    cout << "Enter x-coordinate of pt " << i << ":" << endl; 
    cin >> tempx[i]; 
    cout << "Enter y-coordinate of pt " << i << ":" << endl; 
    cin >> tempy[i]; 
Square mysquare = new Square(tempx,tempy); 

올바른지 확실하지 않으며 '새'를 사용할시기와 포인터를 사용해야하는시기를 잘 모릅니다.

+0

[슬라이드] (http://klmr.me/slides/modern-cpp/#1) – Rapptz

+0

'*'는'Shapes' 다음에'<>'안에 있어야합니다.). 또한, 'new'를 언제 사용해야하는지, 포인터를 사용할시기를 묻는 것은 사과가 더 푸르 롭거나 더 달콤한 지 묻는 것과 같습니다. –

답변

3

간단히 std::vector<Shapes> my_vector을 포인터없이 사용할 수 있습니다. 벡터 객체는 힙에있는 스택의 내용에 할당됩니다. Shape 객체가 연속적으로 메모리에 배치된다는 장점이 있습니다.

관련 문제