SORU
11 Aralık 2009, Cuma


'yeni operatör arasındaki fark' ve 'operatör yeni'?

Arasındaki fark nedir "operatör" ve ""? operatör yeni

CEVAP
11 Aralık 2009, Cuma


Ben genellikle farklı şeyler ikisi biraz daha iyi ayırt etmek için ifade etmeye çalışın, ama her durumda iyi bir soru.

Operatör yeni en azından raw bellek -- kavramsal olarak ayıran bir fonksiyonu, malloc() çok da farklı değil. Kendi kabı gibi bir şeyler yazdığın sürece oldukça sıradışı olsa da, operatör yeni bir doğrudan, gibi olabilir:

char *x = static_cast<char *>(operator new(100));

Ayrıca, belirli bir sınıf için ya da genel olarak aşırı operatör yeni veya muhtemel. IIRC, imza:

void *operator new(size_t);

Sana bir işleç aşırı yüklemesi tabii ki, yeni (ya da genel olarak veya bir sınıf için), depo ya da operatör aşırı silmek için de/isteyeceksiniz. Diziler için bellek -- ayırmak için kullanılan ama neredeyse kesinlikle bu karmaşayı görmezden gelmek daha iyi olursun tamamen. ne de ayrı bir operatör yeni bir şey yok[]

Yeni operatör normalde ücretsiz deposundan bir nesne oluşturmak için kullanılır:

my_class *x = new my_class(0);

İkisi arasındaki fark bu operatör yenisadeceayırır ham bellek, başka bir şey değil. Yeni operatör, yeni bellek kullanarak başlar, ama sonra sonuç gerçek bir nesne bellekte oluşturulur böylece nesne sağ türü için kurucu çağırır,. Eğer bu nesne herhangi bir nesne (ya da temel sınıflar olarak gömülü) varsa, o çağrılan yanı sıra kurucular.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C++

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AginoEvolutionHD

    AginoEvoluti

    27 AĞUSTOS 2011
  • Creavite

    Creavite

    8 Mart 2009
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009