C++动态创建对象数组的问题?

程序如下:#include<iostream>usingnamespacestd;classPoint{public:Point(){X=Y=0;cout<<"Defau... 程序如下:
#include <iostream>
using namespace std;
class Point
{
public:
Point()
{X=Y=0; cout<<"Default Constructor called."<<endl;}
Point(int xx,int yy)
{X=xx;Y=yy; cout<<"Constructor called."<<endl;}
~Point()
{cout<<"Destructor called."<<endl;}
int GetX() {return X;}
int GetY() {return Y;}
void Move(int x,int y) {X=x;Y=y;}
private:
int X,Y;
};

int main()
{
Point *Ptr=new Point[2];
Ptr[0].Move(5,10);
Ptr[1].Move(15,20);
cout<<"Deleting..."<<endl;
delete[] Ptr;
}

以下是运行结果:
Default Constructor called.
Default Constructor called.
Deleting...
Destructor called.
Destructor called.

我的问题:
1、执行Point *Ptr=new Point[2];这句语句时,有没有调用构造函数,调用的是哪一个构造函数?
2、执行Ptr[0].Move(5,10); Ptr[1].Move(15,20);这两句语句时,重复1的问题。
3、delete[] Ptr;中的为什么要加上“方括号”?
4、delete[] Ptr;语句又是调用了哪两句程序?
展开
 我来答
hxk828lj
2008-10-24 · TA获得超过340个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:190万
展开全部
以下是运行结果:
Default Constructor called.
Default Constructor called.
Deleting...
Destructor called.
Destructor called.
你的结果已经很明白了啊!
1.都调用了默认构造函数,因为你创建2个对象时都未给参数;
2.执行这两句时,对象空间已经分配好了,不调用构造函数了.只是执行附值的任务;
3.因为你是用new分配的动态数组空间,数组空间的释放就必须写[],其实在这儿是省略了[2]中的2的;
4.delete[] Ptr;对应的是Deleting...;后面那2句是析构函数根据你的构造函数自动调用的,作用是释放不同构造函数申请的动态内存;
社保小龙虾
职业观察员

2008-10-24 · 一个擅长社保知识、精通五险一金的小虾米!
社保小龙虾
采纳数:131 获赞数:380

向TA提问 私信TA
展开全部
1.创建了 当然要调用构造函数
Point() ---构造函数
2.无。。。
3.动态
4,~Point()--析构函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chimmy869
2008-10-24 · 超过63用户采纳过TA的回答
知道答主
回答量:183
采纳率:0%
帮助的人:191万
展开全部
1.有调用构造函数:是Point() 因为没有传参数。。因为定义了数组,所以调用了两次
2.执行Ptr[0].Move(5,10); Ptr[1].Move(15,20);这两句语句时,没有调用构造函数
3.delete[] Ptr ,因为ptr是数组。所以加了 []
4.同一,对应的先前的两个piont数组。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
愚云皇甫佳惠
2019-05-04 · TA获得超过3695个赞
知道大有可为答主
回答量:3125
采纳率:27%
帮助的人:208万
展开全部
第一种先是定义3个指向student类的指针数组,然后每一个指向这个类的指针元素都用构造函数初始化,而第二种就是定义一个指针,动态分配3个数组,数组里面的元素就是那个类的对象,
简单来说,第一种是定义指针数组,而数组里面的元素是那个类的对象的地址
而第二种就是直接是3个数组,存的元素直接是类的对象本身,而不是地址
不知道我这样解析你懂吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式