指向类成员的指针并非指针
2012-12-07 14:15
218 查看
from《C++ Common Knowledge》
#include <iostream> using namespace std; extern void fi(int); extern void fl(long); extern void fc(char); class Foo { public: Foo(){}; virtual ~Foo(){}; static void do_foo(int i){ cout<<"您好,您输入了i="<<i<<endl; } void to_str(){ cout<<"a_:"<<a_<<",b_:"<<b_<<endl; } int get_ab(){ return a_ + b_ ; } int b_; int a_; }; int main() { typedef void (*PF)(int); PF pf1 = Foo::do_foo; pf1(123); cout<<hex<<pf1<<dec<<endl; int Foo:: * pimC; //指向类Foo的int成员 typedef int (Foo:: * PFAB)(void); PFAB pfab = &Foo::get_ab; //指向类Foo的函数成员 get_ab Foo foo; Foo *pfoo = &foo; foo.a_ = 1; foo.b_ = 2; foo.to_str(); pimC = &Foo::a_; //指向类int成员的赋值 cout<< pimC <<",int成员指针的内容:" << foo.*pimC <<",PFoo->int:" << pfoo->*pimC <<endl; foo.*pimC = 110; foo.to_str(); cout<<pfab<<",get sum ab:"<<(foo.*pfab)() <<",指针:"<< ((pfoo->*pfab)()) <<endl; pimC = &Foo::b_; //指向类int成员的赋值 cout<< pimC << ",int成员指针的内容:" << foo.*pimC <<",PFoo->int:" << pfoo->*pimC <<endl; foo.*pimC = 220; foo.to_str(); cout<<pfab<<",get sum ab:"<<(foo.*pfab)() <<",指针:"<< ((pfoo->*pfab)()) <<endl; /* typedef union{ char ch; int i; } U; U u; u.i = 1; cout<<(int)u.ch<<endl; */ /* int i = 10; void * pv1 = &i; cout<< *(int *)pv1<<endl; */ // PF pf2 = fl; // PF pf3 = fc; // pf1(1); return 0; }
相关文章推荐
- Pointers to Class Members Are Not Pointers(指向类成员函数的“指针”并非指针)
- C++必知必会之(16)指向成员函数的指针并非指针
- 指向类成员的指针并非指针
- 指向类成员的指针并非指针
- 指向类成员变量的指针并非指针
- 指向类成员的指针并非指针
- 指向类成员函数的指针并非指针
- 指向成员函数的指针并非指针
- 指向类成员变量的指针并非指针
- C++必知必会 - 指向类的数据成员的指针并非指针
- C++必知必会之(15)指向类成员的指针并非指针
- 指向类成员变量的指针并非指针
- 指向类成员的指针并非指针
- 指向类成员函数的指针其实并非指针
- 指向类成员函数的指针其实并非指针
- C++必知必会(十五) 指向类的成员的指针并非指针
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- 对用父类指针(或引用)指向父类对象和子类对象时,从而用父类指针或者引用访问成员时的深刻理解;
- 指向类成员函数的指针
- 20140424 父类指针指向子类 子类指针指向父类 父类指针不能访问子类成员(虚函数例外)