Метляков Андрей (deviaphan) wrote in coin3d_ru,
Метляков Андрей
deviaphan
coin3d_ru

Category:

Всегда статические методы

Хочу рассказать о давно известном факте, на который никогда не обращал внимания. Но знать его нужно, поэтому зафиксирую прямо тут и здесь.
Что такое статические методы всем прекрасно известно. Чем статические методы отличаются от методов тоже понятно. Но! От меня долгое время ускользал тот факт, что некоторые методы всегда являются статическими, независимо от использования ключевого слова static. Это операторы new и delete. По своей природе они не могут работать с объектом, т.к. именно они выделяют память для будущего объекта и освобождают её после его удаления. Т.е. в момент их вызова объект ещё либо не создан, либо уже разрушен.
Разработчики приняли очень правильное решение избавить программистов от потенциальных ошибок и сделали эти операторы статическими по умолчанию.
В приведённом ниже коде операторы new и delete являются статическими методами, поэтому внутри них невозможно использовать указатель на объект this.

new & delete.cpp
1 2 3 4 5 6    class Object { public: void * operator new( size_t ); void operator delete( void * ); };
Tags: !раздел:C++
Subscribe

  • Что случилось с оформлением?

    Как вы могли заметить, листинги с кодом перестали выглядеть красиво. Вот что мне ответили в саппорте: Запрет на использование атрибутов…

  • О записях...

    Записи в сообществе не статичны, по возможности я их корректирую, дополняю, исправляю ошибки. К сожалению, в сообществе нельзя выставлять…

  • "Чиним" coin

    #UPD: Бяки.( Отправил разработчикам эту ошибку. В ответ получил: "Тех. поддержка оказывается только пользователям платных аккаунтов". Вот с каких…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments