为了账号安全,请及时绑定邮箱和手机立即绑定

已采纳回答 / AAnonymous
p1 是一个对象, 分配在栈上p2是一个指针,指向p1这个对象,即p2指向p1在栈上的地址(并没有创建新的对象)Coordinate *p2 = new Coordinate(); 才创建了新的对象,在堆上

最赞回答 / 走进科学
1.如果有多个成员数据,构造函数可以一次给多个成员数据设定初始值,set函数一般都是一个成员数据对应一个set函数.一次只能设定一个.2.构造函数只能设定初始值,如果设定了初始值之后,又想要再更改这个值.那么就只能用set了.

已采纳回答 / onemoo
你的Coordinate类没有定义默认构造函数,且因为你已经定义了一个构造函数,故编译器也不会为你自动生成一个默认构造函数。可是在main函数中,第49行处你定义了一个Coordinate数组,这会对每一个元素进行初始化,由于没有默认构造函数,所以没有匹配的调用,编译失败。再有,假设你提供了默认构造函数,那么第51和53行就错误了,因为不能对已经初始化的对象再次调用构造函数。

已采纳回答 / 风拔萝卜
应该加取地址符& 如pCoor = &coor2;

已采纳回答 / IT饱
常成员函数:如果一个成员函数对类中数据成员只作访问而不作直接或间接的修改,则最好将此函数设置为常成员函数,以明确表示它对数据成员的保护性。常对象:必须进行初始化,常对象只能...

已采纳回答 / onemoo
相比于堆,栈的大小是很有限的。而且栈中的对象通常在程序流程离开其作用域后就被销毁了,堆中对象的生存期可以由程序员控制。

已采纳回答 / 攻城small狮
可能你在Line.h和main.cpp里都包含了Coordinate.h,试试去掉main.cpp里的,只保留Line.h里的 我就是这种情况,去掉就好了

最赞回答 / 阿西吧233333
要是在栈中的情况的话是出栈的时候是要反过来析构的,但是在堆中就不是反过来的了,区别在这里

已采纳回答 / 康振宁
如果你采用++p了,那么你这个时候就不能使用p[1]或者是p[2]了,这个时候,你应该是用p[0],如果你不用++p的话,那么你就可以用你现在这个方法了
课程须知
本课程是C++初级课程 需要掌握C++语言基础语法 如果不太熟悉的话,可以观看: 《C++远征之起航篇》 《C++远征之离港篇》 《C++远征之封装篇(上)》
老师告诉你能学到什么?
1、对象数组的定义和使用 2、对象成员的定义和使用 3、深拷贝和浅拷贝 4、对象指针、对象引用的定义和使用 5、常对象指针、常对象引用、常成员函数的定义和使用

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消