Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2015, 17:05   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Финализатор

доброе утро !

подскажите что такое Финализатор и когда он сработает ?
RAFA91 вне форума Ответить с цитированием
Старый 24.09.2015, 17:07   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://lmgtfy.com/?q=.net+%D1%84%D0%...82%D0%BE%D1%80
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.09.2015, 15:57   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

НЕ нашел
RAFA91 вне форума Ответить с цитированием
Старый 25.09.2015, 16:30   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да ну? У меня другой гугл?

Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.09.2015, 16:09   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Добрый день !

Скажите пожалуйста , гарантирует ли вызов финализатора из деструктора полное разрушение обьекта и
освобождении памяти ?

В данном случае при выходе обьекта А из функции func_3() вызывается деструктор.

из деструктора я вызываю финализатор.

возвращаемый обьект А присваивается ссылке K функции мейн.

ссылка К указывает на разрушенный обьект или обьект А все исче на плаву ?

Код:
ref class Message
{
    int x;
public:
    
    Message(int a) : x(a) {Console::WriteLine("Конструктор");}
    ~Message() {Console::WriteLine("Деструктор");this->!Message();}
    !Message() {Console::WriteLine("Финализатор");}
    int func_1() {return x;}
    void func_2(int x) {Message::x=x;}
    
};
 
Message % func_3() ;
 
int main(array<String ^> ^args)
{
    
    Message %K=func_3();
    Console::WriteLine("x = {0}",K.func_1());
    K.func_2(5);
    Console::WriteLine("x = {0}",K.func_1());
    return 0;
}
 
Message % func_3() 
    {
        Console::WriteLine("++++++++++++++++++++++");
        Message A(89);
        Console::WriteLine("** x = {0}",A.func_1());
        return A;
    }
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц