C++类的引用和指针

来源:百度知道 编辑:UC知道 时间:2024/09/20 22:48:07
CTypePtrArray<CPtrArray,CBaseElement *>m_apEle;
CTypePtrArray<CPtrArray,CBaseElement *>* m_papEle;
m_papEle=&m_apEle;
//m_apEle是一个指针数组吧,m_papEle是一个指针吧?把数组首地址赋给指针为什么要加“&”?
CTypePtrArray<CPtrArray,CBaseElement *>& apEle=* m_papEle;
//其中CBaseElement是一个类
//在之后的操作中有:
epEle[0]->GetM();
//引用可以这样对数组进行操作的吗?
GetM()是CBaseElement派生类中的一个成员函数
但是
#include "iostream.h"
void main()
{
int a[5]={1,2,8,4,5};
int *p=a;
int &q=*p;
cout<<q[2]<<'\n';
}
就是错的,是不是数组类的操作有特殊的规定呢?

数组与数组类不同,关键在于
[]
的使用不同
数组使用 [] 是一个操作符
数组类使用 [] 像是使用一个函数

int &q=*p;
单看左边:
int &q
就知道,q 是一个整数的引用
所以
q[2] 不合法

其它的,可在线跟我讨论^_^

1 &是个运算符,用于取出m_apEle所在的内存地址。
2 我归纳一下,你的第二个问题是:
CTypePtrArray<CPtrArray,CBaseElement *>m_apEle;

CTypePtrArray<CPtrArray,CBaseElement *>* m_papEle;

m_papEle=&m_apEle;

CTypePtrArray<CPtrArray,CBaseElement *>& apEle=* m_papEle;

apEle[0]->GetM(); //epEle?apEle? 这里是否可以这样用

如果m_apEle可以这样用m_apEle[0]->GetM();,那么apEle也可以
因为你反推回去apEle就是m_apEle的引用。