发新话题
打印

【讨论】大家探讨一下指向对象.和成员指针的一些用法

【讨论】大家探讨一下指向对象.和成员指针的一些用法

探讨一下.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: }欢迎大家指正.谢谢.同时也欢迎大家踊跃发标关于自给在这方面的经验      

TOP

not bad      

TOP

发新话题