关于指针对象的问题
指针数组里的指针本质上是一个地址值,它所指向的空间在内存中只分配了地址,并未分配变量类型和大小等信息。如果想要调用类的函数,需要先将指针强制转换为类的指针类型,这样才能够正确地解引用指针调用类的函数。
例如,若存在以下定义:
class MyClass
{
public:
void myFunction();
};
int main()
{
MyClass obj1;
MyClass *pObj = &obj1;
MyClass *pObjArray[10];
pObjArray[0] = pObj;
// 下面的调用会报错
pObjArray[0]->myFunction();
return 0;
}
重点:由于指针数组中存放的是指向 MyClass 类型的指针,而不是 MyClass 类型的对象,因此不能直接通过指针数组调用 MyClass 的成员函数,需要对指针进行强制类型转换:
(pObjArray[0]))->myFunction(); 这样才能正确地调用 MyClass 的成员函数。