箭头操作符(->)
发表时间:2006-07-19 00:48:57 关键词:C++,MFC,VC,Primer,编程,教程,读书
(点击:) 把这篇文章告诉我的QQ或MSN朋友
箭头操作符是C++发明的全新操作符,但却不是C++才用到的功能。早期的C语言虽然没有类,却有结构体,也允许有指向结构体对象的指针。不同的只是没有发明“->”这个符号来进行简化操作。说到底,“->”的出现只是代替原来就可以实现的功能。
引用:C++语言为包含点操作符和解引用操作符的表达式提供了一个同义词:箭头操作符(->)。
笔记:这一同义词的出现,不仅仅使程序简化而且更易于理解,更重要的是,它降低了出错的可能性。出什么错呢?这就跟操作符的优先级有关了:
p->a();
(*p).a();
以上两行等价,但是第二行却很容易写成“*p.a();”,由于点操作符的优先级高,就成了“*(p.a());”,这里至少包含了两个错误:一是p不是对象,点操作无效;二是试图对类成员解引用(只有当该成员返回指针才有效)。
也许有人要说了,第一个错误已经导致了编译不通过,还要说第二个错误干什么?这样理解就错了。VC++为程序员提供了一个十分强大的库,其中有些类的对象,既可以进行点操作也可以进行解引用操作的,如果上例中的p是那种类的对象,而且p.a()刚好又返回指针,那么上面这句将可以通过编译,最终换来难以查找的BUG。
记住,尽量多用箭头操作符。
本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
