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

最赞回答 / Asprin_J
和返回类型有关, return *this,返回类型是Array,是值传递,返回后会先copy出一个临时对象,而return this是返回Array*类型,返回值本质上也是值传递,生成一个临时指针对象,但是这个对象内容是指向Array的地址。

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

最赞回答 / qq_渴望六维空间_0
楼上说的是正确的,这个和之前讲的const是一致的,比如:const int A;int *p=&A;这个就是错误的,因为A已经设置为常量,而指针p是可以读写的,用一个权限大的指针p去指向一个权限小的A,是不可以的,会有风险。coordinate的对象被const修饰,变成了常对象,那么指向它的指针this也必须变成常指针,否则就有改变常对象值得风险,因此成员函数内容无论是否改变了常对象的值,都要变成常成员函数,这也就是为什么getX()和getY()要变成常成员函数getX() const和ge...

最赞回答 / onemoo
构造函数的函数名都一样,它们当然是重载的。不过可能会有些特殊之处,比如在调用只有一个参数的构造函数时,在传参中可能会发生隐式类型转换。

最赞回答 / 朵小妖儿
我的理解是:普通对象具有读写权限,而常成员函数具有只读权限,就像最后一个例子的pcoor->printInfo();一样的意思。

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

最赞回答 / Giveme5
因为题目要求定义具有2个对象的Coordinate数组

最赞回答 / define_ray
因为是个临时对象,无法对最初的对象进行操作。

已采纳回答 / IT饱
常成员函数:如果一个成员函数对类中数据成员只作访问而不作直接或间接的修改,则最好将此函数设置为常成员函数,以明确表示它对数据成员的保护性。常对象:必须进行初始化,常对象只能...
课程须知
本课程是C++初级课程 需要掌握C++语言基础语法 如果不太熟悉的话,可以观看: 《C++远征之起航篇》 《C++远征之离港篇》 《C++远征之封装篇(上)》
老师告诉你能学到什么?
1、对象数组的定义和使用 2、对象成员的定义和使用 3、深拷贝和浅拷贝 4、对象指针、对象引用的定义和使用 5、常对象指针、常对象引用、常成员函数的定义和使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消