指针与对象指针

指针

指针变量存放地址的变量。一般变量存放的是数据本身,而指针变量存放的是数据的地址。

结构体指针:类似于对象指针

(结构体与类的区别:若不指定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();

注;成员函数不是存放在对象空间中,所以必须加上类前缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值