【讨论】大家探讨一下指向对象.和成员指针的一些用法
探讨一下.C++ 下.类指针与类成员的指针的一些用法
9 p o$ {. l8 e, M" ^我先开始.由于自给水平有限.难免有错误的地方.欢迎大家指正.谢谢.4 m: P7 H6 L0 q# H/ \: _ ~8 U
test a(1,2,3);
r, \5 u9 Y1 j c: |8 X( }4 ? test *f=&a; //定义一个指向test class 的指针,并且指向class a的首地址
& l+ S7 i1 ~$ D! k- `# P& K int test:: *p = &test::a; //指向成员指针定义( |- {4 s4 m& L) Z" p# P& F
int test:: *o = &test::b;7 K' J6 L7 {0 z! S
int test:: *l = &test::c;8 p* n& Q# p- I2 {
cout<<"-------------------------------------------"<<endl;8 u( Q( h0 ~! s4 \+ S
cout<<"a.*p="<<f->*p<<"a.*o="<<a.*o<<"a.*l="<<a.*l<<endl; //输出成员的值
9 B% i7 F# F8 T- S4 {4 c cout<<"*-------------------------------------------*"<<endl;
) \3 e+ X# S0 I% W cout<<"f->*p="<<f->*p<<endl; //用指针替代成员
# H! E, V. M4 _ G; @& K cout<<"--------------------------------------------------"<<endl;
: V1 L5 S8 o T8 w: z cout<<"&a="<<f<<endl; //显示对象 a 的首地址& `" {+ R3 b0 ^. J7 c8 u
cout<<"&a:"<<&a<<endl;- b0 X8 @" `. A; C; h# c1 D8 j' n
a.*p=3;
( X8 |/ S9 ]- ^2 w cout<<"&test::a="<<a.*p<<endl; //对象名.指向成员的指针,a->*p是错误的,只能用a.*p8 e5 q% s: f: U
cout<<"&test::b="<<f->*o<<endl; //指向对象的指针->指向成员的指针
( v; P7 p! {& @ cout<<"&test::c="<<f->c<<endl; //指向对象的指针->成员
) ?8 U2 l. O8 P$ A printf("p:%d\n",o); //指向成员的指针地址,该地址只是一个指针偏移量.
5 F/ b* M3 C8 W q+ E1 S/*小结 指向对象的指针是个普通指针.与其他变量指针的用法一样.指向类的成员的指针0 B: a9 H0 [4 V, t( v
只是一个类的 首地址开始到该成员的偏移地址 是个特殊指针,定义指向类成员的指针后该成员访问
9 g# e5 ]: ~. J# L0 }1 g2 U是 对象名加.*指针, 定义指向对象的指针+指向类成员的指针后.访问该对象的成员有2种方式,
2 O8 Q; |( S% ]0 R. F) _8 E1 对象指针->*成员指针
- l- e4 \8 ~5 Y6 {2 对象指针->成员 */
: A4 G* J. E2 [; E: }欢迎大家指正.谢谢.同时也欢迎大家踊跃发标关于自给在这方面的经验