- 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 перед реализацией "деструктора").
КАК?!
Вполне может быть что мелкомягкие где-то обобщили операции логической инверсии ("!") и побитового дополнения ("~")
Наверное всё дело в препроцессоре.
http://www.codeproject.com/KB/mcpp/cppclidtors.aspx