(1)class 类---重点
# 课程链接:
16 类和对象-封装-属性和行为作为整体_哔哩哔哩_bilibili
# (1)笔记-1-类封装
# 1)设计一个类及其代码和注释。同时注意,类中的属性(变量)和行为(方法)均称为成员,前者为成员属性或成员变量;后者为成员函数或成员方法。
# (2)笔记-2-访问权限
1)基本概念
2)
3)代码实践:
错误如下所示。
# (3)笔记-3-class 和 struct 的区别
1)基本概念,在 C++ 中,class 和 struct 基本相同,唯独权限不同。
# (4)笔记-4-成员属性私有化
1)基本概念
2)代码实践,本段代码体会下即可。
3)代码实践,如何校验数据的合法性。注意只是 return; 代表退出当前函数。
# (5) 构造函数和析构函数
1)构造函数和析构函数都是编译器自己调用的,不管我们有没有写这个函数,编译器都会调用,如果我们写了就用我们的,如果我们没写,编译器会自己写好这两个函数,但只是类似声明而已,函数体是空的,也就是所谓的空实现。
2)构造函数
3)析构函数
4)实际上,总结一下就是对象的初始化和清理操作。其中,利用构造函数,进行初始化操作,以下是代码实现。
5)析构函数清理对象
# (5) 构造函数的分类以及调用
1)
# (6) 拷贝构造函数的调用时机
1)基本概念
2)代码实践,慢慢体会
#include <iostream> using namespace std; #include <string> class Person { int m_Age; public: Person() { m_Age = 0; cout << "Person 默认构造函数调用" << endl; } Person(int age) { // 有参构造函数 m_Age = age; cout << "调用有参的" << endl; } // 拷贝构造 Person(const Person& p) { m_Age = p.m_Age; cout << "拷贝构造函数" << endl; } ~Person() { cout << "析构了" << endl; } }; void test01() { // 拷贝构造函数的调用时机 /* (1) 使用一个已经创建的对象,来初始化一个新对象;【常用】 */ //(1)的用法如下 Person p1(20); Person p2(p1); } void doWork(Person p) { } void test02() { // 拷贝构造函数的调用时机 // (2) 值传递的方式给函数参数传值 Person p; doWork(p); } // (3) 以值方式返回局部对象 Person doWork2() { Person p; // 创建一个对象 p return p; } void test03() { // 执行拷贝构造函数 Person p1 = doWork2(); } int main() { //test01(); test03(); return 0; }
# (7) 构造函数的调用规则
1)基本概念
2)代码就不写了,反正只要知道,如果给了构造函数,没给拷贝构造函数,那么系统(编译器)就不会自己给构造函数,但会给拷贝构造函数。如果自己给了拷贝构造函数,那么系统就不会给构造函数。
# (8) 深拷贝和浅拷贝
1)基本概念
2)参考链接:27 类和对象-对象特性-深拷贝与浅拷贝_哔哩哔哩_bilibili
# (9)类的初始化列表
1)基本概念
2)代码实践
# (10)类对象作为类成员
1)基本概念
2)代码实践
# (11)静态成员
1)基本概念
# (12)32 类和对象-对象特性-成员变量和成员函数分开存储
1)基本概念
2)代码实践
# (13)33 类和对象-对象特性-this指针的用途
1)基本概念
2)代码实践,实际上对于每个属性,如成员属性 m_A,那么我们在访问 m_A 时,如 cout << m_A << endl; 这段代码,实际上是隐含了 this 指针的,即该代码相当于
cout << this->m_A << endl;
# (14)空指针访问成员函数
1)基本概念
2)代码实践
# (15)对象特性-const 修饰成员函数
1)基本概念
2)代码实践---常函数
3)代码实践---常对象
#
(3)函数重载
# 课程链接:
14 函数高级-函数重载-基本语法_哔哩哔哩_bilibili
# 笔记
#(1)函数重载的概念
# (2)函数重载的理解,如下代码。
1)形参类型不同。
2)形参个数不同。
3)形参顺序不同。
4)函数返回值不可以作为重载的条件。
# (3)函数重载注意事项
# 链接:15 函数高级-函数重载-注意事项_哔哩哔哩_bilibili
#