Co stanowi różnicę pomiędzy stosowaniem do deleteoperatora na elemencie tablicy, w przeciwieństwie do używania w Array.splicesposób ? Na przykład: myArray = ['a', 'b', 'c', 'd']; delete myArray[1]; // or myArray.splice (1, 1); Po co w ogóle stosować metodę łączenia, jeśli mogę usuwać elementy tablicy tak jak mogę z obiektami?
class my_class { ... my_class(my_class const &) = delete; ... }; Co = deleteznaczy w tym kontekście? Czy są jakieś inne „modyfikatory” (inne niż = 0i = delete)?
Czy jest dozwolone, delete this;jeśli instrukcja delete jest ostatnią instrukcją, która zostanie wykonana w tej instancji klasy? Oczywiście jestem pewien, że obiekt reprezentowany przez this-pointer został newutworzony. Myślę o czymś takim: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I …
Mam, class Aktóry używa alokacji pamięci sterty dla jednego ze swoich pól. Klasa A jest tworzona i przechowywana jako pole wskaźnika w innej klasie ( class B. Kiedy skończę z obiektem klasy B, wzywam delete, który, jak przypuszczam, wywołuje destruktor… Ale czy to wywołuje również destruktor klasy A? Edytować: Z …
W porządku, myślę, że wszyscy zgadzamy się, że to, co dzieje się z następującym kodem, jest nieokreślone, w zależności od tego, co zostanie przekazane, void deleteForMe(int* pointer) { delete[] pointer; } Wskaźnik może być najróżniejszymi rzeczami, więc wykonanie delete[]na nim bezwarunkowego działania jest nieokreślone. Załóżmy jednak, że rzeczywiście przekazujemy wskaźnik …
Książka C ++, którą czytałem, stwierdza, że kiedy wskaźnik jest usuwany za pomocą deleteoperatora, pamięć w miejscu, na które wskazuje, jest „zwalniana” i można ją nadpisać. Stwierdza również, że wskaźnik będzie nadal wskazywał tę samą lokalizację, dopóki nie zostanie ponownie przypisany lub ustawiony na NULL. Jednak w programie Visual Studio …
Zawsze zastanawiałem się, dlaczego automatyczne ustawienie wskaźnika na NULL po usunięciu nie jest częścią standardu. Jeśli zostanie to rozwiązane, wiele awarii z powodu nieprawidłowego wskaźnika nie wystąpi. Powiedziawszy jednak, że przychodzi mi do głowy kilka powodów, dla których norma miałaby to ograniczyć: Występ: Dodatkowa instrukcja może spowolnić deletedziałanie. Czy to …
Kontekst: Próbuję zawinąć głowę wokół wskazówek, widzieliśmy je kilka tygodni temu w szkole i podczas dzisiejszych ćwiczeń wpadłem na głupiego? problem, może to być dla ciebie bardzo proste, ale mam niewielkie doświadczenie w programowaniu. Widziałem w SO sporo pytań dotyczących usuwania wskaźników, ale wszystkie wydają się być związane z usunięciem …
Mam podstawowe pytanie dotyczące wskaźników const. Nie wolno mi wywoływać funkcji niebędących składowymi stałymi przy użyciu wskaźnika do stałej. Jednak mogę to zrobić na wskaźniku const: delete p; Spowoduje to wywołanie destruktora klasy, która w istocie jest „metodą” inną niż stała. Dlaczego jest to dozwolone? Czy to tylko w celu …
Jak mogę reallocw C ++? Wydaje się, że brakuje tego języka - jest newi deleteale nie ma resize! Potrzebuję tego, ponieważ ponieważ mój program odczytuje więcej danych, muszę ponownie przydzielić bufor, aby go przechowywać. Myślę, że deletestary wskaźnik i newnowy, większy, nie są właściwą opcją.
W c++03nim jest całkiem jasne, że usuwając wskaźnik NULL nie ma żadnego wpływu. Rzeczywiście, jest wyraźnie stwierdzone, §5.3.5/2że: W obu przypadkach, jeśli wartość operandu delete jest pustym wskaźnikiem, operacja nie ma żadnego efektu. Jednak w obecnym projekcie dla c++0xtego zdania wydaje się być brakuje. W pozostałej części szkicu mogłem znaleźć …
Utworzenie nowego obiektu klasy C za pomocą operatora new () powoduje błąd: class C { public: C() {} virtual ~C() {} void operator delete(void*) = delete; }; int main() { C* c = new C; } z C2280: 'void C::operator delete(void *)': function was explicitly deleted Ale kiedy wymienić C() …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.