Форум программистов, компьютерный форум CyberForum.ru

как увидеть cout от диконстрактора (компелятор MS V C++ 2010 express ) - C++

Восстановить пароль Регистрация
 
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
17.05.2012, 15:04     как увидеть cout от диконстрактора (компелятор MS V C++ 2010 express ) #1
Кочется увидеть cout от деконстрактора

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// .h
 
#ifndef SILLY_H
#define SILLY_H
 
 
#include <iostream>
 
using namespace std; 
 
class silly 
{
    public: 
        silly();
        ~silly();
        
};
        
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//.cpp
#include "silly.h"
#include <iostream>
using namespace std; 
 
 
silly :: silly () 
{
        cout << "i'm costructor"<< endl;
}
 
silly::~silly()
        {
        cout << "I'm deconstructor" <<endl;
        }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//main.cpp 
#include "silly.h"
#include <iostream>
 
using namespace std; 
 
int main () {
 
 
silly so; 
cout << "omg wtf " << endl;
 
 
system ("pause");
 
}
cout от констрактора выводится, а от диконстрактора нет. Скажите, пожалуйста, почему ? Мож дело в настройках компилятора ??? заранее спасибо ! Когда я создаю проект я пользуюсь Win32 console App and empty project.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
17.05.2012, 15:25     как увидеть cout от диконстрактора (компелятор MS V C++ 2010 express ) #2
Потому, что деструктор выполняется перед выходом из main(),
т.е. после system("pause");
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
class silly 
{
    public: 
      silly();
      ~silly();
};
silly :: silly () 
{
   cout << "i'm costructor\n"<< endl;
}
silly::~silly()
 {
    cout << "I'm deconstructor\n" <<endl;
 }
int main ()
{
   silly* so=new silly; 
   delete so;
    cout << "omg wtf " << endl;
    system ("pause");
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.05.2012, 15:29     как увидеть cout от диконстрактора (компелятор MS V C++ 2010 express ) #3
Деструктор(да, он так называется) вызывается при выходе из области видимости, в данном случае в конце main'a. Т.е. у вас ставится пауза, вы снимаете с паузы, и уже тогда выводится эта надпись.
Можно сделать так
C++
1
2
3
4
5
6
7
int main()
{
   {
      silly s;
   }
   system("pause");
}
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
17.05.2012, 15:32  [ТС]     как увидеть cout от диконстрактора (компелятор MS V C++ 2010 express ) #4
Цитата Сообщение от zss Посмотреть сообщение
Потому, что деструктор выполняется перед выходом из main(),
т.е. после system("pause");
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
class silly 
{
    public: 
      silly();
      ~silly();
};
silly :: silly () 
{
   cout << "i'm costructor\n"<< endl;
}
silly::~silly()
 {
    cout << "I'm deconstructor\n" <<endl;
 }
int main ()
{
   silly* so=new silly; 
   delete so;
    cout << "omg wtf " << endl;
    system ("pause");
}
А можно как ниб без new and delete?
Я почему озадачился... В этом туториале (ниже ) там все хип хоп с cout- ом. Парень даже system ("pause ") не юзает
http://www.youtube.com/watch?v=4P4Im...ure=plpp_video

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Деструктор(да, он так называется) вызывается при выходе из области видимости, в данном случае в конце main'a. Т.е. у вас ставится пауза, вы снимаете с паузы, и уже тогда выводится эта надпись.
Можно сделать так
C++
1
2
3
4
5
6
7
int main()
{
   {
      silly s;
   }
   system("pause");
}
Огромное спасибо!
Yandex
Объявления
17.05.2012, 15:32     как увидеть cout от диконстрактора (компелятор MS V C++ 2010 express )
Ответ Создать тему
Опции темы

Текущее время: 16:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru