- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
class A
{
public:
~A();
};
void A::!A()
{
//destructor
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR commandLine, int)
{
A* a = new A();
delete a;
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+163
class A
{
public:
~A();
};
void A::!A()
{
//destructor
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR commandLine, int)
{
A* a = new A();
delete a;
return 0;
}
Компилируется и РАБОТАЕТ (заходит в этот "деструктор" при удалении объекта) под Visual C++ 2008.
Перестаёт компилироваться после любого малейшего изменения (например, если убрать void перед реализацией "деструктора").
КАК?!
absolut 21.08.2010 12:22 # 0
Вполне может быть что мелкомягкие где-то обобщили операции логической инверсии ("!") и побитового дополнения ("~")
Наверное всё дело в препроцессоре.
Kirinyale 21.08.2010 18:34 # 0
Stalker 21.08.2010 12:38 # +1
Dummy00001 21.08.2010 17:29 # 0
Kirinyale 21.08.2010 18:35 # +1
xiwera 23.08.2010 13:51 # +1
http://www.codeproject.com/KB/mcpp/cppclidtors.aspx
guest 18.02.2011 14:48 # 0