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

本文介绍了在C++中通过对象指针访问成员变量和成员函数时容易犯的错误,强调了点操作符和箭头操作符的使用规则。错误示例包括尝试使用*p.getN()来访问成员函数,由于操作符优先级导致的语法错误。正确的做法是使用(*p).getN()或者p->getN()。文章帮助读者理解如何正确地通过指针调用类的成员。
摘要由CSDN通过智能技术生成

当我学习到对象指针访问成员(包括成员变量和成员函数)时,遇到了易错的问题。总结下来。
首先是基本知识:
我们可以通过点操作符和箭头操作符两种方式来访问成员(包括成员变量和成员函数);
点操作符:通过对象(类类型的变量)访问成员函数,点操作符左侧为对象,右侧为成员(包括成员变量和成员函数)。
箭头操作符:通过指针访问成员函数,箭头操作符左侧为指针变量,右侧为成员(包括成员变量和成员函数)。
下面是遇到的易错问题:
首先定义一个类: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()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值