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

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

Хочу рассказать о давно известном факте, на который никогда не обращал внимания. Но знать его нужно, поэтому зафиксирую прямо тут и здесь.
Что такое статические методы всем прекрасно известно. Чем статические методы отличаются от методов тоже понятно. Но! От меня долгое время ускользал тот факт, что некоторые методы всегда являются статическими, независимо от использования ключевого слова 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
  • 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