- 1
this++;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+146
this++;
Думаю, так нельзя в члене класса, но выглядит все равно забавно.
main.cxx:8:7: ошибка: lvalue required as increment operand
Попытка подобной модификации 'this' выглядела бы так: '(*(int*) &this)++', но компилятор, разумеется, не позволит применить '&' к 'this'.
{
public:
some(){f1();};
int f1()
{
int f;
*((int*)(int(&f)+0x0C))=0x1234;
void* p;
p=this;
return 0;
}
};
Visual Studio 2002
Под отладчиком показывает p==0x1234 :))
указатель this передается в ф-ю через стек, переменная f располагается там же на расстоянии 0xC (выяснено опытным путем через тот же отладчик)
а может, что-то вроде этого:
int f1(){
int *p;
asm{
lea eax, this
mov p, eax
}
*p = 0x1234;
p = this;
return 0;
}
про thiscall можно глянуть здесь:
http://ru.wikipedia.org/wiki/Соглашение_вызова
#define this i
this++;