数组我很困惑与cplusplus.com类型变量的对象
// pointer to classes example
#include <iostream>
using namespace std;
class CRectangle {
int width, height;
public:
void set_values (int, int);
int area (void) {return (width * height);}
};
void CRectangle::set_values (int a, int b) {
width = a;
height = b;
}
int main() {
CRectangle a, *b, *c;
CRectangle * d = new CRectangle[2];
b= new CRectangle;
c= &a;
a.set_values (1,2);
b->set_values (3,4);
d->set_values (5,6);
d[1].set_values (7,8);
cout << "a area: " << a.area() << endl;
cout << "*b area: " << b->area() << endl;
cout << "*c area: " << c->area() << endl;
cout << "d[0] area: " << d[0].area() << endl;
cout << "d[1] area: " << d[1].area() << endl;
delete[] d;
delete b;
return 0;
}
我在想采取为什么d[0].area()
是合法的,而不是d[0]->area()
,这导致我的d
减速下面的例子其中CRectangle * d = new CRectangle[2];
。是不是有两个级别的间接,所以不应该d
与CRectangle ** d
宣布,因为新返回一个指针,它是一个指针,因为它是一个数组(因此是[])。换句话说不是**=*[]
?
不,**阵列不是指针!** – chris
请勿使用cplusplus.com,请使用[cppreference](http://en.cppreference.com/w/) – Borgleader
[您需要了解的所有数组](http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c) – Praetorian