最近学到c++的指向对象的指针方面的内容,感觉跟以前学的c指针有挺多不同,所以在这里写个总结,方便以后查阅。
先在这里列出以前所学的指针类型:
int *p; //定义指向整型数九的指针变量。
int *p[]; //定义指向数组的指针。
int (*p)[n]; //指向含有n个元素的一维数组。
int *f(); //定义一个返回指向整型的数据的指针。
int (*p)(); //定义指向返回整型数据函数的指针。
int **p; //定义一个指向指向整型数据的指针的指针。
变量的引用可以用相应的指针或引用。都可以起到即使是将变量作为形参也可以修改变量的值。
形如:swap(int &,int &)
也可以进行对象的引用
Time t1;
Time t2=&t1;
好了,现在列举下关于指向对象和指向对象成员的指针了。
①指向对象的指针。
定义的一般形式:类名 *指针名;
Time *pt;
赋值的形式:pt = &t1;
②指向对象成员数据的指针。
定义的一般形式:数据类型 *指针名;
int *pt;
赋值的形式: pt=&t1.time;
调用的形式: cin>>*pt; //指向对象成员数据的指针的定义和调用与一般变量类似。
③指向对象成员函数的指针。
定义的一般形式:数据类型名 (类名::*指针变量名)(参数列表); //参数列表可不填写。
void (Time::*pt)();
赋值的形式: 指针变量名=&类名::成员函数名;
pt=&Time::get_time;
也可以初始化时赋值:
void (TIme::*pt)()=&Time::get_time;
调用的一般形式: t1.(*pt)(); //因为对象的成员函数不存储与对象的空间(为了所有的同类对象共用函数)。所以每次用指针前面都要加上对象名