指针
指针变量:存放地址的变量。一般变量存放的是数据本身,而指针变量存放的是数据的地址。
结构体指针:类似于对象指针
(结构体与类的区别:若不指定public和private,结构体默认为公共,类默认为私有)
对象指针:对象存储空间的起始地址
1.指向对象的指针:定义一个指针变量,用来存放对象的地址。
class Time{…}
Time *p;//定义p为指向Time类对象的指针变量
Time t1;
p = &t;//将t1的起始地址赋给p
2.指向对象成员的指针
●指向数据成员
与普通变量的指针变量定义的方法相同。
int*p1;//定义指向整型数据的指针变量。只能用int,因为对应的hour为int型,左右两边返回的数据类型要一致(p = &t)
p1 = &t1.hour;//hour应为公有数据
或者
Time *p2 = &t1;
Cout << (*p2).hour<< endl;//hour可为私有
●指向成员函数
普通函数的指针变量定义方法:
void(*p3)();//p是指向void型函数的指针变量
p = fun;//p指向fun,不加括号
(*p3)();//调用fun函数
成员函数不同,因为赋值号两侧需要3个方面的匹配:
函数参数的类型和参数个数、函数的返回值类型、所属的类(若用上面方法则此点不满足)
正确方法为:
void(Time::*p4)()//多了一个Time::
p4 = &Time::get_time;//不加括号
(*p2)()//调用get_time函数
或者
Time *p5 = &t1;
P5->get_time();
注;成员函数不是存放在对象空间中,所以必须加上类前缀