查看“Pointers to classes”(非常底部)下的示例
我们如何在这里使用点操作符:
CRectangle * d = new CRectangle[2];
...
d[1].set_values (7,8);
如果d是指针?
相同的问题:
cout << "d[0] area: " << d[0].area() << endl;
cout << "d[1] area: " << d[1].area() << endl;
另外,对于声明:
CRectangle * d = new CRectangle[2];
我们可以在不声明对象的情况下声明指向该类型的指针吗?
答案 0 :(得分:3)
d是指向CRectangle对象数组的指针(在本例中为2)。 d [i]是第i个CRectangle对象。所以当你说d [i] .set_values()时,你实际上是在该数组中第i个CRectangle对象上调用set_values方法。
答案 1 :(得分:3)
在这种情况下,指针实际上是一个数组,其中包含两个对象。首先将“d”构造为具有2个元素的数组:
CRectangle * d = new CRectangle[2];
// which is the dynamically allocated version of..
CRectangle d[2];
然后,它通过以下方式访问第二个元素的area()方法:
d[1].area()
答案 2 :(得分:3)
在您的示例中,虽然d
确实是指针,但d[1]
不是。它是*(d+1)
处对象的引用。
答案 3 :(得分:1)
答案 4 :(得分:1)
以为我只是添加你要使用' - &gt;'的情况操作者:
CRectangle* d[2];
d[0] = new CRectangle();
d[1] = new CRectangle();
d[0]->set_values(7,8);