«delete-operator» etiketlenmiş sorular

C ++ programlama dilinde, silme operatörü verilen bağımsız değişkenin yıkıcısını çağırır ve yeni tarafından ayrılmış belleği öbeğe geri döndürür.




10
Buna silme izni var mı?
delete this;Delete-deyiminin, sınıfın o örneğinde yürütülecek son deyim olup olmadığına izin veriliyor mu? Elbette this-pointer tarafından temsil edilen nesnenin newyaratıldığından eminim . Ben böyle bir şey düşünüyorum: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch over …

11
Bir alt sınıfa işaretçi silmek temel sınıf yıkıcısını çağırır mı?
Ben bir class Aalanlarından biri için yığın bellek ayırma kullanır. Sınıf A başlatılır ve başka bir sınıfta işaretçi alanı olarak depolanır ( class B. B sınıfı bir nesneyle işimi bitirdiğimde delete, yıkıcı olarak adlandırdığımı farz ediyorum ... Ama bu A sınıfının yıkıcısı mı diyor? Düzenle: Cevaplardan, bunu alıyorum (yanlışsa lütfen …

16
[] Silme işlemi bir dizi olduğunu nasıl biliyor?
Tamam, sanırım hepimiz, aşağıdaki kodla olanların, geçirilene bağlı olarak tanımsız olduğunu kabul ediyoruz, void deleteForMe(int* pointer) { delete[] pointer; } İşaretçi her türlü farklı şey olabilir ve bu nedenle delete[]üzerinde koşulsuz bir işlem yapmak tanımsızdır. Ancak, bir dizi işaretçisini gerçekten geçtiğimizi varsayalım, int main() { int* arr = new int[5]; …


6
Visual Studio silinmiş bir işaretçi ile ne yapar ve neden?
Okuduğum bir C ++ kitabı, deleteoperatör kullanılarak bir işaretçi silindiğinde işaret ettiği konumdaki belleğin "serbest bırakıldığını" ve üzerine yazılabileceğini belirtiyor. Ayrıca, işaretçinin yeniden atanana veya olarak ayarlanana kadar aynı konumu göstermeye devam edeceğini belirtir NULL. Visual Studio 2012'de ise; durum böyle görünmüyor! Misal: #include <iostream> using namespace std; int main() …

12
İşaretçiyi neden NULL olarak ayarlamıyor?
Silme işleminden sonra işaretçinin otomatik olarak NULL olarak ayarlanmasının neden standardın bir parçası olmadığını hep merak etmişimdir . Bu halledilirse, geçersiz bir işaretçi nedeniyle birçok çökme meydana gelmez. Ancak, standardın bunu neden kısıtlayacağına dair birkaç neden düşünebileceğimi söylemiştim: Verim: Ek bir talimat, deleteperformansı yavaşlatabilir . İşaretçiler yüzünden olabilir mi const? …

6
C ++ 'da bir işaretçiyi silme
Açıklama: İşaretçilerin etrafına sarılmaya çalışıyorum, onları birkaç hafta önce okulda gördük ve bugün pratik yaparken bir aptalla karşılaştım? sorun, sizin için çok basit olabilir, ancak hiç programlama deneyimim yok. SO'da işaretçileri silmeyle ilgili epeyce soru gördüm, ancak hepsi bir sınıfı silmekle ilgili görünüyor ve 'basit' bir işaretçi değil (veya uygun …

5
Sabit'e bir işaretçi silme (T const *)
Const işaretçileriyle ilgili temel bir sorum var. Const işaretçisi kullanarak const olmayan herhangi bir üye işlevi çağırma iznim yok. Bununla birlikte, bunu bir const işaretçisinde yapma iznim var: delete p; Bu, özünde const olmayan bir 'yöntem' olan sınıfın yıkıcısını çağıracaktır. Buna neden izin veriliyor? Sadece bunu desteklemek için mi: delete …

5
C ++ 'da nasıl yeniden tahsis edersiniz?
reallocC ++ 'da nasıl yapabilirim ? Dilde eksik görünüyor - var newve deleteyok resize! Buna ihtiyacım var çünkü programım daha fazla veri okurken, onu tutmak için tamponu yeniden tahsis etmem gerekiyor. deleteEski işaretçiyi ve newyeni, daha büyük bir işaretçiyi seçmenin doğru seçenek olduğunu düşünmüyorum .


3
Yıkıcı neden operatör silme işleminde çağrılmıyor?
İçinde ::deletebir sınıf çağırmaya çalıştım operator delete. Ancak yıkıcı çağrılmaz. Dersim tanımlanmış MyClassolan operator deleteaşırı. Küresel operator deletede aşırı yüklü. Aşırı operator deleteait MyClassAşırı yüklenmiş küresel arayacak operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } virtual ~MyClass() { printf("Destroying MyClass...\n"); } void* operator new(size_t size) { printf("Newing …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.