#include<iostream>
class MyString{
public:
int Ind;
void show(){
std::cout<<Ind<<std::endl;
}
explicit MyString(int I){
Ind=I;
std::cout<<«constr»<<Ind<<«adress»<<&Ind<<std::endl;
}
~MyString(){
std::cout<<«destr»<<Ind<<«adress»<<&Ind<<std::endl;
//Ind=0;
}
};
int main(int argc, char *argv[])
{
std::cout<<«begin»<<std::endl;
MyString G(1);
std::cout<<&G<<std::endl;
std::cout<<«G»<<std::endl;
G.~MyString();
G=MyString(2);
std::cout<<&G<<std::endl;
std::cout<<«G»<<std::endl;
G.show();
G.~MyString();
G=MyString(3);
std::cout<<&G<<std::endl;
//std::cout<<«begin»<<std::endl;
/*for(int i=0;i<4;i++){
MyString g(i);
std::cout<<&g<<std::endl;
g.show();
}*/
//MyString *pj;
/*
for(int k=0;k<5;k++){
std::cout<<«for1»<<std::endl;
for(int i=0;i<4;i++){
MyString j(i);
std::cout<<j.Ind<<std::endl;
pj=&j;
j.Ind=i;
std::cout<<pj<<std::endl;
}
std::cout<<«endfor1»<<std::endl;
std::cout<<(*pj).Ind<<std::endl;
(*pj).Ind=k;
}*/
std::cout<<«end»<<std::endl;
}
____________________________________________________________
вывод:
begin
constr1adress0xbfa761e4
0xbfa761e4
G
destr1adress0xbfa761e4
constr2adress0xbfa761e8
destr2adress0xbfa761e8
0xbfa761e4
G
2
destr2adress0xbfa761e4
constr3adress0xbfa761ec
destr3adress0xbfa761ec
0xbfa761e4
end
destr3adress0xbfa761e4
_____________________________________________________________
вопрос:
1. Как мне явно вызвать деструктор для статической переменной
2. Корректен ли вышеприведённый вывод, я вижу здесь изменение адреса(которого быть не должно), destr1adress0xbfa761e4
constr2adress0xbfa761e8
destr2adress0xbfa761e8
0xbfa761e4
это вообще какой-то бред.
В общем этот вывод вообще корректен?
был на этой странице:
http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.5
у меня проблемы с англ, но по-моему здесь ответа на мой вопрос нет, потому что в моём случае я вызываю диструктор явно и у меня начинают лезть какие-то глюки, а там написано что деструктор просто вызовется при }
Ответ на:
комментарий
от AF
Ответ на:
комментарий
от ferrum2688
Ответ на:
комментарий
от ferrum2688
Ответ на:
комментарий
от ferrum2688
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от ferrum2688
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от AF
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от AF
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от AF
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от ferrum2688
Ответ на:
комментарий
от ferrum2688
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от AF
Ответ на:
комментарий
от Booster
Ответ на:
комментарий
от dilmah
Ответ на:
РЕШЕНО НА 95%
от ferrum2688
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум constexpr массивы в c++ (2018)
- Форум [C++] Почему не работает самопальный str_replace (2011)
- Форум Поле типа unique_ptr и деструктор (2019)
- Форум Нет ошибки сегментации при попытке доступа по неинициализированной памяти. (2014)
- Форум Что не так с кодом? (2011)
- Форум [C++] [gtkmm] Почему неправильно работает? (2011)
- Форум gcc и копирующий конструктор. (2010)
- Форум BOOST thread не понимаю ... (2011)
- Форум Функция read() в С++ (2011)
- Форум c++ templates (2011)