- 1
this++;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+146
this++;
Думаю, так нельзя в члене класса, но выглядит все равно забавно.
guest 04.04.2011 12:06 # −4
TheCalligrapher 04.04.2011 17:28 # +6
guest 04.04.2011 21:44 # +1
main.cxx:8:7: ошибка: lvalue required as increment operand
guest 04.04.2011 22:47 # −1
TheCalligrapher 04.04.2011 23:27 # +3
Попытка подобной модификации 'this' выглядела бы так: '(*(int*) &this)++', но компилятор, разумеется, не позволит применить '&' к 'this'.
guest 05.04.2011 00:02 # +2
{
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 (выяснено опытным путем через тот же отладчик)
ctm 05.04.2011 10:56 # 0
а может, что-то вроде этого:
int f1(){
int *p;
asm{
lea eax, this
mov p, eax
}
*p = 0x1234;
p = this;
return 0;
}
ReL 05.04.2011 14:40 # −1
guest 05.04.2011 16:01 # 0
про thiscall можно глянуть здесь:
http://ru.wikipedia.org/wiki/Соглашение_вызова
absolut 05.04.2011 00:02 # 0
ctm 05.04.2011 11:04 # +1
#define this i
this++;