C++入门:封装全解(上)
类与对象初体验
什么是类和对象
当我们说到“狗是人类忠实的朋友”,这里的狗,是泛指,泛指就是类。
当我们说“豆丁是一只呆萌的哈士奇”,这里的豆丁就是具体的一只狗,这就是对象。
那么,总结起来,类是抽象的概念,而对象是具体的事物。类和对象的关系就可以理解为模具和铸件。
类的定义
实例化对象
实例化对象就是把抽象的类变成具体对象的过程,
从堆中实例化后,该对象被存储在内存的堆区;
从栈中实例化后,该对象被存储在内存的栈区。
初始字符串体验
什么是字符串
在C++中,字符串用来存放一个或多个char字符。
字符串的定义
字符串相关方法
使用注意
属性封装的艺术
如何封装
如下例子,我们对数据成员 age 进行了封装,想要读取该数据成员,只能通过类内的方法实现
封装的好处
封装后可以提高数据成员的安全性。
精彩的类外定义
内联函数与普通函数
类内定义函数
在类内部定义的函数,并且是逻辑操作相对简单的函数会默认被编译当作内联函数编译。
类外同文件定义函数
类外分文件定义函数
对象的生离死别
构造函数的功能和特点
一:构造函数必须与类同名
二:构造函数没有返回值
三:构造函数在对象实例化时被自动调用
四:构造函数可以有多个重载形式
五:实例化对象时仅用到一个构造函数
六:当用户没有定义构造函数时,编译器自动生成一个构造函数
无参构造函数和有参构造函数
默认构造函数
这个概念很简单,但是需要着重提醒。
没有参数的构造函数和有默认参数的构造函数都叫做默认构造函数。
什么是初始化列表
初始化列表的的特点
一:初始化列表先于构造函数执行
二:初始化列表只能用于构造函数
三:初始化列表可以初始化多个数据成员
四:初始化列表可以用来设置const类型成员
拷贝已经实例化的对象
什么是拷贝构造函数
当我们对已经实例化的对象进行拷贝时,就会调用拷贝构造函数。
拷贝构造函数的特点
一:如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构造函数
二:当采用直接初始化或复制初始化实例化对象时系统自动调用拷贝构造函数
什么是析构函数
析构函数的特点
一:如果没有自定义的析构函数则系统自动生成
二:析构函数在对象销毁时自动调用
三:析构函数没有