1. C++ / Говнокод #15970

    +13

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    #include <iostream>
    
    using namespace std;
    
    class Foo
    {
    public:
    	void foo()
    	{
    		cout << "Destruct" << endl;
    	}
    };
    
    int main() 
    {
    	void (Foo::*func)() = &Foo::foo;
    	void *adress = (void*&)func;
    	void (*new_func)(Foo*) = (void (*)(Foo*))adress;
    	Foo obj;
    	new_func(&obj);
    }

    Юный падаван постигает силу void-указателей.

    Запостил: west_coast_coders, 13 Мая 2014

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

    • Не взлетит - пусть внутри функции постучится хоть к одному атрибуту класса, заодно и про соглашения ввызовов узнает.
      Ответить
      • > заодно и про соглашения ввызовов узнает
        И про то, что далеко не всегда указатель на член это просто указатель на функцию...
        Ответить
        • показать все, что скрытоСлюшай ты, выделишь память под анонимную структуру, тогда и побеседуем, лось.
          Ответить
          • > выделишь память под анонимную структуру
            Нахуя зачем? Она сама выделится при выделении памяти под внешнюю структуру/объединение. А без чего-то вокруг нее она не скомпилится.

            > Слюшай ты
            > лось
            А вы интеллигентный и вежливый человек, как я посмотрю.
            Ответить
            • На уютненьком снова активизировались петухи, пока меня небыло? Теперь с веселыми картинками вместо гоатсе?
              Ответить
              • Неужели они кому-то мешают/бесят? Тут хоть какое-то разнообразие.
                А не унылые, монотонные засирания.
                Ответить
    • Объявление указателей на функции (а особенно на члены) без исползования альясов — говноедство.
      Ответить

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