Кресты / Говнокод #6207 Ссылка на оригинал

0

  1. 1
this++;

Думаю, так нельзя в члене класса, но выглядит все равно забавно.

Запостил: Говногость Говногость, (Updated )

Комментарии (11) RSS

  • main.cxx:8:7: ошибка: increment of read-only parameter ‘this’
    main.cxx:8:7: ошибка: lvalue required as increment operand
    Ответить
    • ^^^ Не является попыткой модификации 'this'.

      Попытка подобной модификации 'this' выглядела бы так: '(*(int*) &this)++', но компилятор, разумеется, не позволит применить '&' к 'this'.
      Ответить
      • class some
        {
        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 (выяснено опытным путем через тот же отладчик)
        Ответить
        • ну, есть разные стандарты передачи аргументов. этот для cdecl:)
          а может, что-то вроде этого:
          int f1(){
          int *p;
          asm{
          lea eax, this
          mov p, eax
          }
          *p = 0x1234;
          p = this;
          return 0;
          }
          Ответить
        • всю жизнь считал, что this передается через ecx...
          Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8