"Указатели на члены"

Nov 21, 2006 17:05


На C++:
#include struct C { C() : foo(&C::_g) {} const char* _f() const { return "C._f() called"; } const char* _g() const { return "C._g() called"; } const char* (C::* foo)(void) const; const char* bar() const { return (this->*(this->foo))(); } }; int main() { C x; const char* (C::* pmf)(void) const = NULL; pmf = &C::_f; std::printf("%s\n", (x.*pmf)()); // => "C._f() called" std::printf("%s\n", (x.*(x.foo))()); // => "C._g() called" std::printf("%s\n", x.bar()); // => "C._g() called" return 0; }

То же самое на Python:
class C(object): def _f(self): return 'C._f() called' def _g(self): return 'C._g() called' foo = _g if __name__ == '__main__': x = C() print x._f() # => 'C._f() called' print x.foo() # => 'C._g() called'

Запостил ужас "хозяйке на заметку", ибо запомнить чехарду с указателями наx члены не представляется возможным.

(Волшебная ссылка с объяснениями: [PDF]. Второй раз выручает, бусинка.)

wtf, c++, links, python

Previous post Next post
Up