对象指针访问成员的方法及易错点

当我学习到对象指针访问成员(包括成员变量和成员函数)时,遇到了易错的问题。总结下来。
首先是基本知识:
我们可以通过点操作符和箭头操作符两种方式来访问成员(包括成员变量和成员函数);
点操作符:通过对象(类类型的变量)访问成员函数,点操作符左侧为对象,右侧为成员(包括成员变量和成员函数)。
箭头操作符:通过指针访问成员函数,箭头操作符左侧为指针变量,右侧为成员(包括成员变量和成员函数)。
下面是遇到的易错问题:
首先定义一个类:class ClassX
{
public:
void setN(int N)
{
n = N;
}
int getN()
{
return n;
}
private:
int n;
};
再定义一个对象a:ClassX a;

再定义一个对象指针p:ClassX * p;

把a的地址赋值给对象指针变量p:p = &a;(也就是指针变量p指向对象a)

1.当用点操作符访问变量时可能会写成 * p.getN();
这样是错的, 错误的原因是操作符的优先级,点操作符的优先级高于星号操作符,所以 * p.getN()相当于是 * (p.getN()),即先进行p.getN(),再进行 * (p.getN())
而点操作符要求左侧为对象,右侧为成员(包括成员变量和成员函数),但这里左侧为p,p是指针变量,不是对象,所以会报错。
正确的写法为( * p).getN()。
2.使用箭头操作符访问成员的格式为:p->getN()。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值