struct BLA
{
int size_;
int size()const{ return size_; }
}
int x;
BLA b[ 2 ];
BLA * p = &b[ 0 ];
b[ 0 ].size_ = 4;
b[ 1 ].size_ = 6;
当我编译这一行:指针增量 - 怪异
x = p->size_ + (p++)->size_;
我收到了预期的结果。但是,当我编译这一行(没有前一个):
x = p->size() + (p++)->size();
然后我得到不同的结果。 'p'不会像前一行那样增加。有人可以解释这一点吗?尝试VS 2008和VS 2010.
你会在第一个和第二个案例中发布结果吗? –
这是UB。非常类似棘手的问题:“++ i ++的结果是什么?” – keltar
@Lyubomir,第一个案例8,第二个案例10。 – user1764961