Creative Commons License

기본 생성자가 없는 객체 배열을 만들 수 있나? IT



C++ in Action Book: Pointers
There is no direct way to initialize the contents of a dynamically allocated array. We just have to iterate through the newly allocated array and set the values by hand.

C++에서 new연산자를 이용해서 객체배열을 만들 때, 객체에 기본생성자는 없고 다른 생성자가 있을 경우는 사용할 수 있는 문법 자체가 전무하다. 그냥 처음부터 끝까지 돌면서 하나하나 초기화 해주시라는 답안이다. 잇힝~*

C/C++이 상당히 유연하다고 생각했는데, 가끔씩 이런 것에서 뒷통수 때릴 수도 있다. 다른 언어는 어떨까? 왠지 Java/C#/D는 있을 것 같다.

덧글

  • chadr 2008/12/06 08:46 # 삭제

    자바나 c#같은 언어에서는 배열 선언할때 일단 배열 레퍼런스를 생성하고 거기에 실제 인스턴스를 채워넣도록 되어있어서 사실상 배열 선언과 동시에 초기화가 아예 불가능하죠.. 아래와 같은..

    Object[] array = new Object[10];

    for (int i = 0; i < 10; i++)
    {
    array[i] = new Object();
    }

    뭐 이딴식으로 배열 생성과 동시에 초기화를 할수 있는 메커니즘 따위는 존재 하지 않기 때문에(primitive type이 아니면 반드시 new를 써야하므로..) c++같은 모호함이 존재하지 않죠.
    그런데 솔직히 c++에서 배열생성과 동시에 임의의 생성자를 호출 할수 있는 기능은 반드시 있었으면 하는데 차기 표준에 들어갈려나 모르겠네요.. 봤던거 같기도 한데 찾아보니 안보인다능..
  • 샘이 2008/12/08 09:38 #

    그래서 D언어를 뒤적뒤적...
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.

Google Adsense

Google Adsense

Google Analytics



C로그팬박스