Aracılığıyla paylaş


Yeni Works

Ayırma ifade — ifade içeren Yeni operator — üç şey gerçekleştirir:

  • Bulur ve nesneyi veya nesneleri ayrılması için depolama alanı ayırır. Bu aşaması tamamlandığında, doğru depolama miktarını tahsis edilir, ancak henüz bir nesne değil.

  • Nesneleri başlatır. Başlatma işlemi tamamlandıktan sonra bir nesne olarak ayrılmış depolama için yeterli bilgi yok.

  • Türetilmiş bir işaretçi türü nesneler için bir işaretçi döndürür türü adı yeni veya türü adı. Program, bu işaretçiyi yeni ayrılan nesneye erişmek için kullanır.

Yeni operator işlevini çağırır operator new. Herhangi bir tür diziler ve biri olmayan nesneler sınıfı, struct, veya Birliği türleri, genel bir işlev :: yeni işleç, depolamaya ayıracak kadar denir. Sınıf türü nesneleri tanımlayabilirsiniz, kendi operator new statik üye işlevi her sınıf için ayrı ayrı.

Ne zaman derleyici karşılaştığı Yeni türünde bir nesne ayrılacak işleç type, çağrı sorunlar type**:: yeni işleç (sizeof (type))** veya kullanıcı tanımlı Hayır operator new tanımlanır, :: yeni işleç (sizeof (type)).     Bu nedenle, Yeni işleci, nesne için doğru bellek miktarını ayırabilirsiniz.

Not

Bağımsız değişken operator new tür size_t.Bu tür doğrudan içinde tanımlanır.H, MALLOC.H, BELLEK.H, ARA.H, STDDEF.H, STDIO.H, STDLIB.H, DİZE.H ve saat.H.

Tayini bir dilbilgisi seçeneği verir yerini (Dilbilgisi için bkz: new operatörünü). Yerini parametresi, yalnızca kullanıcı tanımlı uygulamaları için kullanılabilir operator new; için iletilmek üzere ek bilgi sağlayan operator new. Bir ifade ile bir yerini gibi alan T *TObject = new ( 0x0040 ) T; için çevrilen T *TObject = T::operator new( sizeof( T ), 0x0040 ); sınıf t üye işleci yeni, aksi takdirde gerekirse T *TObject = ::operator new( sizeof( T ), 0x0040 );.

Özgün oluşturulmasındaki amaç, yerini alanı olan donanıma bağımlı nesneleri kullanıcı tarafından belirtilen adreslerde tahsis edilecek izin vermek için.

Not

Yukarıdaki örnek tek bir bağımsız değişken olarak göstermesine rağmen yerini alan kaç ek bağımsız değişkenler için geçirilen üzerinde sınırlama yoktur operator new bu şekilde.

Hatta, operator new tanımlanmış Bu örnek formu kullanarak genel işleci bir sınıf türü için kullanılabilir:

T *TObject =::new TObject;

Kapsam çözünürlük operatörü (::) genel kullanımını zorlar Yeni işleci.

Ayrıca bkz.

Başvuru

Yeni işleç (C++)