2015-06-24 8 views

Odpowiedz

8

Pierwszy (new type[0]) faktycznie utworzy obiekt tablicy (i tym samym zajmie pamięć). Możesz użyć obiektu tablicy (o rozmiarze 0), na przykład aby uzyskać jego długość lub iterować nad nim, ale nie możesz oczywiście uzyskać dostępu do żadnego z jego elementów. Możesz więc przekazać go do dowolnej funkcji, która nie przyjmuje założeń dotyczących długości tablicy (ale zamiast tego robi właściwe sprawdzenia) i zadziała.

Drugi (null) nie tworzy żadnych obiektów. Otrzymasz wyjątek, jeśli spróbujesz uzyskać dostęp do dowolnego członka.

-1

Potrzebujesz 3 kroków, aby utworzyć obiekt.

  1. Dekleracja typ A []; -> Dekloryzacja. Po zadeklarowaniu obiektu nie zajmujesz pamięci dla instancji, ale zajmujesz trochę pamięci dla odwołania.

  2. Utworzenie Aby to zrobić, potrzebujesz "nowego" słowa kluczowego. Gdy tworzysz instancję obiektu, zajmujesz pamięć.

  3. Inicjalizacja W tym celu potrzebujesz konstruktora, Like -> type A [] = new A [size]; To wszystko.

+0

To nie jest dokładnie prawda. Nawet nieprzypisana zmienna zajmuje (może zajmować) trochę pamięci. Nie pamięć instancji, ale pamięć potrzebna do odniesienia. –

+0

Oczywiście, nawet nieprzypisana zmienna zajmuje trochę pamięci, ale chodzi o to, że zrozumiałem, że instancja zajmuje trochę pamięci. Słuchaj, masz rację. –

Powiązane problemy