下面这道C++的题目为什么是这样做得

求一下详细的解释
2024-12-05 03:38:02
推荐回答(1个)
回答1:

MyClass a[3],*p[2]; 等价于MyClass a[3]; MyClass *p[2];
MyClass a[3]; //定义了一个数组,该数组有3个MyClass类型的元素,这3个元素生成时会调用该类的构造函数,调用了3次
MyClass* p[2]; //定义了一个数组,该数组有2个指向MyClass类型的指针,注意它的元素仅仅是两个指针,这两个指针可以指向MyClass的对象,并没有产生MyClass类型的对象,所以并不会调用构造函数。
比如这个数组的两个指针可以指向上面已经定义好的a数组的元素:
p[0]=&a[0]; //p[0]指向a[0]
p[1]=&a[1]; //p[1]指向a[1]