为了账号安全,请及时绑定邮箱和手机立即绑定
老师的讲课视频做得真好,再加上高超的讲课技术,真心不错!
竹杖芒鞋轻似马,谁怕?一蓑烟雨任平生。
越学到后面感觉有点吃力了,思维快要跟不上了,有些地方要回头看两遍才理解,不知道跟往后会是怎么样的一个情况,不过,既然都到这里了,也不能半途而废,加油吧,少年!
常数据成员定义: const 变量名;用法:只能被常成员函数或者常对象调用
常成员函数定义: 函数名(参数)const;相当于函数名(const Coordinate*this,参数)。用法:一般用于无参数函数当中,例如get(),print()函数中。作用是将当前的对象*this修饰成常对象,常对象的属性不能修改,因而不能在常成员函数中修改数据成员的值。
常对象:const 类名 对象名; 只能调用常成员函数,或者常数据成员。
常成员函数的作用一般作为只读函数使用,不修改成员数据的值。利用const函数,也增加程序的可读性。
常对象定义的语法:const 类名 对象名(参数列表)|| 类名 const 对象名(参数列表)//声明时必须初始化
常成员函数定义的语法:类型标识符 类名::函数名(参数列表) const
常成员函数声明的语法:类型标识符 成员函数名(参数列表) const
互为重载说明常对象只能调用常成员函数
1、this指针无需用户定义,是编译器自动产生的。
2、同一个类的两个对象的this指针指向不同位置的内存:对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址
3、当成员函数的参数或临时变量与数据成员同名时,可以使用this指针区分同名的数据成员。
4、this指针也是指针类型,所以在32位编译器下也占用4个基本的内存单元,即sizeof(this)的结果为4
this 本身是一个指针,*this 便是一个对象
记住:我们设置了类,但是设置许多实例化的对象通过构造函数,拷贝构造函数实现数据与数据成员的赋值,旧的对象与新的对象之间的联系,多个对象可以调用同一个类中的成员函数,其放置在代码区并不受影响,对于我们来说,我们关心成员函数的输出,申请一个新对象既是开辟一个新的内存单元存储数据成员以使对象之间区别出来。
这些基础上穿插了对象数组,对象成员,对象成员指针,研究的其实还是不同的数据成员与成员函数之间的新关系。课里为我们演示了构造函数,拷贝构造函数,析构函数的使用原理,也讲述了栈和堆的不同,希望自己能分清楚。
对象成员指针:实例化 Line 的时候,先调用 Coordinate 构造函数,再调用 Line 构造函数,销毁的时候,先销毁堆中的对象即 Coordinate 对象,再销毁 Line 对象。跟对象成员有区别,对象成员会先销毁 Line 对象,再销毁内层的 Coordinate 对象。
第一节我就好奇Coordinate后面怎么没有括号,看来是自己孤陋寡闻了。。。。。。。。
当数据成员中含有指针时,浅拷贝会使两个对象的成员指针指向相同的内存地址
深拷贝不是简单的值拷贝,而是将指针成员指向的内存数据也进行拷贝。
不是所有的对象都需要深拷贝,应该根据情况合理使用。

关于浅复制:
在用一个对象初始化另一个对象时,只复制了数据成员,而没有复制资源,使两个对象同时指向了同一资源的复制方式称为浅复制;
默认复制构造函数所进行的是简单数据复制,即浅复制。
关于深复制:
通过一个对象初始化另一个对象时,不仅复制了数据成员,也复制了资源的复制方式称为深复制;
自定义复制构造函数所进行的复制是深复制。
浅拷贝就是直接将数据成员的值直接赋值过去,不包含指针就行,如果包含指针,就会把两个对象的指针指向了同一个内存空间,容易发生错误。
word天啊……
没做预编译的工作啊,用#pragma once或者#ifndef方式
显示全部的析构函数在析构函数定义时system("pause")即可
课程须知
本课程是C++初级课程 需要掌握C++语言基础语法 如果不太熟悉的话,可以观看: 《C++远征之起航篇》 《C++远征之离港篇》 《C++远征之封装篇(上)》
老师告诉你能学到什么?
1、对象数组的定义和使用 2、对象成员的定义和使用 3、深拷贝和浅拷贝 4、对象指针、对象引用的定义和使用 5、常对象指针、常对象引用、常成员函数的定义和使用

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消