为什么*(ptra + 0).prop
无效和(*(ptra + 0)).prop
有效? 。我知道点运算符的左侧必须具有结构。但是我还是很困惑。有人可以向我解释两者之间的区别吗?
class myobj
{
public:
int v;
};
int main()
{
myobj *ptra = new myobj[2]();
*(ptra + 0).v = 12 //Error
(*(ptra + 0)).v = 12 ; //OK
return 0;
}
最佳答案
因为operator .
具有higher precedence,然后具有operator *
,所以
*(ptra + 0).v
手段
*((ptr + 0).v)
并不是
(*(ptra + 0)).v
*((ptr + 0).v)
这里的语法不正确,因为(ptr + 0)
不是类或联合,所以没有任何成员。关于c++ - *(ptra + 0).prop和(*(ptra + 0))。prop的有效性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13001774/