W języku C ++ co oznacza tylda „~” przed nazwą funkcji?
136
template<class T>classStack{public:Stack(int=10);~Stack(){delete[] stackPtr ;}//<--- What does the "~" signify?int push(const T&);int pop(T&);int isEmpty()const{return top ==-1;}int isFull()const{return top == size -1;}private:int size ;int top ;
T* stackPtr ;};
Jest to destruktor, niszczy instancję, zwalnia pamięć itd.
Oto opis z ibm.com:
Destruktory są zwykle używane do zwalniania pamięci i wykonywania innych czynności porządkowych dla obiektu klasy i jego elementów członkowskich, gdy obiekt zostanie zniszczony. Destruktor jest wywoływany dla obiektu klasy, gdy ten obiekt wykracza poza zakres lub jest jawnie usuwany.
Jak zauważyli inni, w instancji, o którą pytasz, jest to destruktor class Stack.
Ale biorąc pytanie dokładnie tak, jak pojawia się w tytule:
W języku C ++ co oznacza tylda „~” przed nazwą funkcji?
jest inna sytuacja. W każdym kontekście, z wyjątkiem bezpośrednio przed nazwą klasy (która jest kontekstem destruktora), ~jest operatorem dopełnienia (lub nie bitowym). Z pewnością nie zdarza się to zbyt często, ale możesz sobie wyobrazić taki przypadek
if(~getMask()){...
który wygląda podobnie, ale ma zupełnie inne znaczenie.
@Jherico: Właściwie to jest to słowo kluczowe „usuń”. Pamiętaj, że słowo kluczowe „new” wywołuje „operator new”, a następnie wywołuje konstruktor na zwróconym adresie, dzięki czemu jest całkowicie możliwe utworzenie „nowej” pamięci na stosie. :) Słowo kluczowe „delete” wywołuje destruktor, a następnie wywołuje „operator delete”.
@Jherico lub żyje w zakresie przestrzeni nazw lub jest statyczną składową klasy lub lokalną zmienną statyczną funkcji: statyczny czas trwania przechowywania. Innymi słowy: wszystkie przedmioty wartościowe z automatycznym przechowywaniem zostaną automatycznie zniszczone, gdy będzie to konieczne. Strzeż Static inicjalizacji zamówienia Fiasco
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.