请问一个关于对象数组和指针的有关问题
请教一个关于对象数组和指针的问题
//请教一个关于对象数组和指针的问题
Class A
{
public:
f();
private:
int n;
}
A a[i]; //定义对象数组
A *p; //定义指向A类对象的指针
p=a;
=======================================
为什么 (p+i-1)->f() 和 a[i-1].f() 等价
但 *(p+i-1).f() 和 a[i-1].f() 不等价。
编译错误提示error C2228: left of '.f' must have class/struct/union type
------解决方案--------------------
需要把对象用括号括起来,编译器整不清*的作用范围
(*(p+i-1)).f()
------解决方案--------------------
当不确定算符优先级时不妨多加几层括号。
//请教一个关于对象数组和指针的问题
Class A
{
public:
f();
private:
int n;
}
A a[i]; //定义对象数组
A *p; //定义指向A类对象的指针
p=a;
=======================================
为什么 (p+i-1)->f() 和 a[i-1].f() 等价
但 *(p+i-1).f() 和 a[i-1].f() 不等价。
编译错误提示error C2228: left of '.f' must have class/struct/union type
------解决方案--------------------
需要把对象用括号括起来,编译器整不清*的作用范围
(*(p+i-1)).f()
------解决方案--------------------
当不确定算符优先级时不妨多加几层括号。