注册 登录
编程论坛 C++教室

小菜的问题

无诲今生 发布于 2009-09-17 00:09, 368 次点击
刚学C++不久,有很多的问题须要各位大哥大姐们,以下的程序有些地方不懂,如下:
#include<iostream.h>
class A
{
public:
int i,*p;
A(){i=10;p=&i;}
};
int A::*p=&A::i;
void main()
{
A aa,bb;
(bb.*p)++;
--*aa.p;
cout<<"AA:"<<aa.*p<<"BB:"<<bb.*p<<"\n";
cout<<"AA:"<<*aa.p<<"BB:"<<*bb.p<<"\n";
}

结果为:AA:99 BB:11
        AA:99 BB:11

请问aa.*p和*aa.p有什么不同啊?
还有“*”和“.”这个哪个运算优先啊?
2 回复
#2
serious2009-09-17 05:38
- "int* p"是"正常"的指针, 而"p"是成员的指针 : http://blog.
- "."比"*"有优先 :
程序代码:
struct A
{
    int n;
};
int main()
{
    A* a = new A();
    // *a.n = 1; // 错误
    (*a).n = 1; // 好
}

#3
yxb00012009-09-18 09:16
aa.*p//类aa中成员*p,而此成员却是一指针;
*aa.p=*(aa.p)//指向类aa中成员p的所在地址的值。
"."比"*"有优先.
1