第四章指针和引用 与对象有关的指针 1、对象的指针 形式: 类名*对象的指针名 例子: Cylinder cylinder l Cylinder *cylinder =&cylinder Pcylinder-> sercylinder( 20.0, 20.0) cylinder surface area(
第四章 指针和引用 一、与对象有关的指针 1、对象的指针 形式: 类名 *对象的指针名 例子: Cylinder cylinder1; Cylinder *pcylinder = &cylinder1; Pcylinder -> sercylinder(20.0,20.0); Pcylinder -> surface_area();
2This指针 This指针是指向对象的指针,它隐含在类成员函数中,用来指向 成员函数所属类的正在被操作的对象。 编译器会把对象的地址赋给成员函数中的this指针。确保访问到的 数据成员属于这个对象 例如: DateDate(int y, int m, int d is -year=y, this - month this -> day =d 注:静态成员函数没有this指针
2 This指针 This 指针是指向对象的指针,它隐含在类成员函数中,用来指向 成员函数所属类的正在被操作的对象。 编译器会把对象的地址赋给成员函数中的this指针。确保访问到的 数据成员属于这个对象 例如: Date::Date(int y,int m,int d) { this -> year = y; this -> month = m; this -> day = d; } 注:静态成员函数没有this 指针
3.指向类成员的指针 指向数据成员的指针 数据类型类名∷*数据成员指针名; 赋值: 数据成员指针名=&类名::数据成员名 例如: class a public nt A: p=&A:a
3. 指向类成员的指针 指向数据成员的指针: 数据类型 类名::*数据成员指针名; 赋值: 数据成员指针名 = &类名::数据成员名 例如: class A { public: … int a; … }; int A::*p = &A::a;
访问数据成员: 对象名*类成员指针名通过对象名访问 对象指针名→*类成员指针名/通过对象的指针访问 void mal Aa(1.5,26),*pa=&a;/pa指向a对象 double a:*px=&A:x,∥声明指向A的x的指针 a. outputxyo cout<<axt"<<a x<<endl coUu<<"a.*px=t"<a*px<<endl;∥数据成员指针访问x coUu<<"pa>*px=t"<pa->*px<<endl;指向对象的指针及数 据成员指针访问x
访问数据成员: 对象名.*类成员指针名 //通过对象名访问 对象指针名 -> *类成员指针名 //通过对象的指针访问 void main() { A a(1.5,2.6), *pa=&a; //pa指向a对象 double A::*px = &A::x; //声明指向A的x的指针 a.outputxy(); cout<<"a.x=\t"<<a.x<<endl; cout<<"a.*px=\t"<<a.*px<<endl; //数据成员指针访问x cout<<"pa->*px=\t"<<pa->*px<<endl;//指向对象的指针及数 据成员指针访问x
二、Void和 const指针 Void指针 Void指针可以指向任何C++数据类型。Void指针的值赋给其他类 型的指针,需要进行强制类型转换。 例如: int a int*pl=&a void p2=pI intp=p2 int *p4=(int *)p2
二、void和const指针 1.Void 指针 Void指针可以指向任何C++数据类型。Void 指针的值赋给其他类 型的指针,需要进行强制类型转换。 例如: int a; int *p1=&a; void *p2=p1; int *p3=p2; int *p4=(int *)p2;