2013-11-19 6 views
-6

В следующем фрагменте кода, что смысл :: ~Что такое смысл :: ~

GaussianMex::~GaussianMex() 
{ 
    int i; 
} 
+7

Возможно, вы захотите ознакомиться с [The Definitive C++ Book Guide and List] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) для начинающих книг и учебников , –

+3

Это часто связано с SO, но Symbol Hound может помочь вам в таких вопросах: http://symbolhound.com/ –

+1

@ ta.speot.is: Да, удачи в том, чтобы найти что-нибудь относящееся к «:: ~». – Xeo

ответ

12

Это не один оператор ::~, а определение деструктора GaussianMex. Вы определяете методы класса по синтаксису ClassName::ClassMethod, а поскольку имя деструктора ~ClassName, то определение деструктора - ClassName::~ClassName.

+4

Самый простой реп, который вы когда-либо получите. –

4

Это деструктор.

Рассмотрим:

class GaussianMex 
{ 
public: 

    // This is the CONstructor (ctor). It is called when an instance of the class is created 
    GaussianMex() 
    { 
    }; 

    // This is a Copy constructor (cctor). It is used when copying an object. 
    GaussianMex(const GaussianMex& rhs) 
    { 
    }; 


    // This is a move constructor. It used when moving an object! 
    GaussianMex(GaussianMex&& rhs) 
    { 
    }; 


    // This is the DEStructor. It is called when an instance is destroyed. 
    ~GaussianMex() 
    { 
    }; 


    // This is an assignment operator. It is called when "this" instance is assigned 
    // to another instance. 
    GaussianMex& operator = (const GaussianMex& rhs) 
    { 
     return *this; 
    }; 


    // This is used to swap two instances of GaussianMex with one another. 
    friend void swap(GaussianMex& lhs, GaussianMex& rhs) 
    { 
    }; 
}; // eo class GuassianMex 

Целью конструктора является сделать любой инициализации, которая требуется (возможно, выделяя память или другие экземпляры классов). Деструктор делает обратное - он выполняет очистку любых ресурсов, выделенных классом в течение своей жизни.

+1

Bzzt! * tazes для высказывания «вызвал класс» * – Kos

+0

@ Kos, fair play :) * tasered * –

+0

Вы забыли копию и переместите конструкторы и оператор присваивания! * slap * –

0

Вы определяете деструктор класса GaussianMex.

1

Это указывает, что метод является деструктором.

Ваш класс может иметь не более одного деструктора, и он всегда является именем класса с префиксом ~.

Деструктор вызывается всякий раз, когда уничтожается экземпляр вашего объекта. Это происходит всякий раз, когда экземпляр выходит из области видимости или когда вы вызываете delete на указатель на экземпляр класса.

Смежные вопросы