Fal*_*rri 34 c++ pointers operator-overloading
这样做有一般的区别吗?
(*ptr).method()
VS
ptr->method()
我在另一个问题的评论中看到了这个问题,我想在这里问一下.虽然我记得几乎C++中的每个操作符都可以重载,所以我想答案将取决于.但总的来说,做一个与另一个之间有区别吗?
Che*_*Alf 62
作为"jamesdlin"已经指出的那样,*和->运算符可以重载类的类型.
然后两个表达式(*ptr).method(),并ptr->method()可以有不同的效果.
但是,对于内置运算符,两个表达式是等价的.
->当你跟踪指针链时,操作符会更方便,因为它.具有更高的优先级*,因此需要很多不可忽略的括号.
考虑:
pBook->author->snailMail->zip
与
(*(*(*pBook).author).snailMail).zip
jam*_*lin 12
对于原始指针类型,它们是等价的.
是的,对于一般类型,答案确实是"它依赖",因为类可能会超载operator*并operator->具有不同的行为.