使用“ - >”调用函数

时间:2013-02-05 15:57:25

标签: c++ pointers

我目前正在学习虚函数,在本课程中,它创建了一个对象指针数组firstArray[5],并从这些对象中调用函数。到目前为止,每当我想从对象func()调用函数foo时,我都会写foo.func()。既然我已经使用了虚函数和这个数组,那么本书已经转向这种方法:firstArray[0]->func()。这本书在证明这种转换方面没有做得很好,有人可以解释一下吗?我看到当我尝试使用firstArray[0].func()时,我得到了这个......

error: request for member 'func' in 'firstArray[0]', which is of non-class type 'sampleClass*'

这只是因为我试图从指针调用函数,而不是实际的对象吗?我已经学习了几个月的C ++,无论出于什么原因,指针仍然会让我感到沮丧。任何澄清都会有所帮助。

编辑:

我认为让我混淆的部分是:我可以使用base *ptr;创建指向基础对象类的指针。然后,我可以通过说ptr = new derived;从派生类创建一个新对象来设置该指针。这是我感到困惑的地方。如果我要创建一个int* ptr;,我希望它指向我创建的整数,我就不能说ptr = int j。如果ptr实际上只是一个地址,为什么这两个例子的工作方式不同?我想我不会理解"新的"机械师也很好。

1 个答案:

答案 0 :(得分:5)

这与虚函数没有任何关系。如果你有一个指针,你需要operator->尊重和访问它所指向的对象......

您仍然可以使用该运算符。 (点)如果您首先取消引用,则访问成员/函数:

(*foo).func()

指向对象的指针只保存对象在内存中保存的地址 因此,如果您有一个变量,它是指向某种类型的指针,它实际上包含一个数字。

如果你想使用这个对象,你需要调用它指向的对象,就像我说的那样使用operator *或operator。 (点)。