
C++
lzg2021
这个作者很懒,什么都没留下…
展开
-
第65课 C++ 中的异常处理(下)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结catch 语句块中可以抛出异常catch 中捕获的异常可以被重新解释后抛出工程开发中使用这样的方式 统一异常类型编程实验下面我们来写一个程序对 catch 抛出的异常进行重新解释#include <iostream>using namespace std;void func(...原创 2020-03-15 10:42:23 · 138 阅读 · 0 评论 -
第64课 C++中的异常处理(上)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结C++ 异常处理C++ 内置了异常处理的语法元素 try…catch…try 语句处理正常代码逻辑catch 语句处理异常情况try 语句中的异常由对应的 catch 语句处理C++ 通过 throw 语句抛出异常信息C++ 异常处理分析throw 抛出的异常必须被 catch 处理当前函数 能...原创 2020-03-10 20:48:31 · 179 阅读 · 0 评论 -
第62课 单例类模板
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结单例模式要控制类的对象数目,必须对外隐藏构造函数</font>思路:将构造函数的访问属性设置为 private定义 instance 并初始化为 NULL当需要使用对象时,访问 instance 的值空值:创建对象,并且 instance 标记非空值:返回 instance 标记的对象实验代码实...原创 2020-03-08 14:50:56 · 102 阅读 · 0 评论 -
第61课 智能指针类模板
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结智能指针智能指针 的意义现代 C++ 开发库中 最重要的类模板之一C++ 中 自动内存管理 的主要手段能够在 很大程序 上避开内存相关的问题STL 中的智能指针 auto_ptr生命周期结束时,销毁指向的内存空间不能指向堆数组,只能指向堆对象(变量)一片堆空间只属于一个智能指针对象多个智能指针对象 不能指...原创 2020-03-07 22:26:43 · 123 阅读 · 0 评论 -
第60课 数组类模板
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结预备知识模板参数可以是数值型参数(非类型参数)数值型模板参数的限制变量 不能作为模板参数浮点数 不能作为模板参数类对象 不能作为模板参数。。。本质:模板参数是 在编译阶段被处理 的单元,因此,在编译阶段必须准确无误的唯一确定。有趣的面试题用你觉得 最高效 的方法求 1 + 2 + 3 + … + N...原创 2020-03-06 09:42:56 · 173 阅读 · 0 评论 -
第59课 类模板深度剖析
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结多参数类模板类模板可以定义 任意多个同的类型参数类模板可以被特化指定类模板的 特定实现部分类型参数 必须显示指定根据类型参数 分开实现类模板...原创 2020-03-05 22:01:56 · 111 阅读 · 0 评论 -
第58课 类模板的概念和意义
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结类模板一些类主要用于 存储和组织数据元素类中数据组织的方式和数据元素的 具体类型无关如:数组类,链表类,Stack 类, Queue 类, 等C++ 中的类模板以相同的方式处理不同的类型在类声明前使用 template 进行标识<typename T> 用于说明类中使用的 泛指类型 T类...原创 2020-03-04 21:35:37 · 141 阅读 · 1 评论 -
第57课 深入理解函数模板
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结函数模板编译器从函数模板通过具体类型 产生不同的函数编译器会 对函数模板进行两次编译对模板代码本身进行编译对参数替换后的代码进行编译注意事项:函数模板本身 不允许隐式类型转换自动推导类型时,必须严格匹配显示类型指定时,能够进行隐式类型转换实验代码#include <iostream&g...原创 2020-03-04 19:08:17 · 150 阅读 · 0 评论 -
第56课 函数模板的概念和意义
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结交换变量的方法定义宏代码块 VS 定义函数#include <iostream>#include <string>using namespace std;/* 使用宏来完成变量交换 */#define SWAP(t, a, b) \do \...原创 2020-03-04 17:19:54 · 154 阅读 · 0 评论 -
第55课 经典问题解析四
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结问题一 关于动态内存分配new 和 malloc 的区别是什么?delete 和 free 的区别是什么?new 关键字与 malloc 函数的区别new 关键字是 C++ 的一部分malloc 是由 C 库提供的函数new 关键字以 具体类型为单位 进行内存分配malloc 以字节为单位 进行内存分配...原创 2020-03-03 21:27:22 · 145 阅读 · 0 评论 -
第54课 被遗弃的多重继承(下)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结多重继承的问题三实验代码#include <iostream>#include <string>using namespace std;class BaseA{public: virtual void funcA() { cout << "...原创 2020-03-01 21:00:54 · 148 阅读 · 0 评论 -
第53课 被遗弃的多重继承(上)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结C++ 中的多重继承C++ 支持编写 多重继承 的代码一个子类可以 拥有多个父类子类拥有 所有父类 的成员变量子类继承 所有父类的 成员变量子类对象可以 当作任意父类对象 使用多重继承的语法规则:多重继承的本质与单继承相同!多重继承问题一编程实验#include <iostream>...原创 2020-03-01 20:27:20 · 152 阅读 · 0 评论 -
第52课 C++ 中的抽象类和接口
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结面向对象中的 抽象类可用于表示现实世界中的 抽象概念是一种只能 定义类型,而 不能产生对象 的类 只能被继承 并重写相关函数直接特征是 相关函数没有完整的实现C++ 语言中 没有抽象类 的概念C++ 中 通过纯虚函数实现抽象类纯虚函数是指 只定义原型 的成员函数一个 C++ 类中 存在纯虚函数 就成了抽...原创 2020-03-01 10:54:19 · 160 阅读 · 0 评论 -
第51课 C++ 对象模型分析(下)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结继承对象模型在 C++ 编译器的内部 类可以理解为结构体子类是由 父类成员叠加子类新成员 得到的下面我们来编写一段程序来验证#include <iostream>using namespace std;class Parent{protected: int m_i; int m_j;...原创 2020-03-01 10:21:39 · 399 阅读 · 0 评论 -
第50课 C++ 对象模型分析(上)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结回归本质class 是一种特殊的 struct在内存中class 依旧可以看作变量的集合class 与 struct 遵循相同的内存对齐规则class 中的成员函数 与 成员变量 是分开存放的每个对象有 独立的 成员变量所有对象 共享 类中的成员函数值得思考的问题运行结果...原创 2020-02-29 11:20:46 · 133 阅读 · 0 评论 -
第49课多态的概念和意义
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结多态的概念和意义面向对象中期望的行为:根据实际的对象类型判断如何调用重写函数父类指针(引用)指向父类对象则调用父类中定义的函数子类对象则调用子类中定义的重写函数面向对象中的多态的概念根据实际的 对象类型决定函数调用 的具体目标同样的 调用语句 在实际运行时有 多种不同的表现形态C++ 语言直接...原创 2020-02-28 13:22:28 · 154 阅读 · 0 评论 -
第48课 同名覆盖引发的问题
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结父子间的赋值兼容子类对象可以当作父亲对象使用(兼容性)子类对象可以 直接赋值 给父类对象子类对象可以 直接初始化 父类对象父类指针 可以 直接指向 子类对象父类引用 可以 直接引用 子类对象编程实验编写一个Parent类和一个Child类,Child类继承Parent类#include <iostre...原创 2020-02-27 22:20:40 · 141 阅读 · 0 评论 -
第47课 父子间的冲突
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结父子间的冲突子类 可以定义 父类中的 同名成员子类中的成员将 隐藏父类 中的同名成员父类中的 同名成员依然存在于子类中通过 作用域分辨符 (::) 访问父类中的同名成员访问父类中的同名成员实验代码#include <iostream>using namespace std;class...原创 2020-02-27 21:07:13 · 175 阅读 · 0 评论 -
第46课 继承中的构造与析构
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结子类对象的构造子类中可以定义构造函数子类构造函数必须对继承而来的成员进行初始化直接通过初始化列表 或者 赋值的方式 进行初始调用父类构造函数 进行初始化父类构造函数在子类中的调用方式默认调用:*适用于 无参构造函数 和 使用默认参数的构造函数显示调用:通过 初始化列表 进行调用适用于 所有 父类构...原创 2020-02-26 21:58:27 · 163 阅读 · 0 评论 -
第45课 不同的继承方式
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结不同的继承方式C++ 中支持三种不同的继承方式public 继承父类成员在子类中 保持原有访问级别private 继承父类成员在子类中 变为私有成员protected 继承父类中的 公有成员变为保护成员,其它成员保持不变实验代码编写一个程序,来说明各种不同的继承方式#include <iostrea...原创 2020-02-26 20:20:07 · 162 阅读 · 0 评论 -
第44课 继承中的访问级别
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结值得思考的问题子类是否可以 直接访问 父类的 私有成员 ?思考过程实验代码我们来写一个程序,用子类来访问父类私有成员#include <iostream>using namespace std;class Parent{private: int m_member;};class...原创 2020-02-26 13:52:52 · 152 阅读 · 0 评论 -
第43课 继承的概念和意义
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结组合关系实验编程以电脑为例,编程描述 组合关系#include <iostream>using namespace std;class MainBoard{public: MainBoard() { cout << "MainBoard(): " &l...原创 2020-02-26 12:22:43 · 227 阅读 · 0 评论 -
第42课 类型转换函数(下)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结类型转换函数C++ 类中可以定义 类型转换函数类型转换函数用于 将类对象转换为其它类型语法规则: Operator Type () { Type ret; //... return ret; }编程实验编写一个成员函数,将类类型转换成 int 类型...原创 2020-02-26 08:53:12 · 169 阅读 · 0 评论 -
第41课 类型转换函数(上)
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结再论类型转换标准数据类型之间会进行 隐式的类型安全转换转换规则如下:隐式规则为小类型往大的类型转实验编程我们来写一个程序来测试基本类型的转换#include <iostream>#include <string>using namespace std;int main(){...原创 2020-02-25 21:57:28 · 194 阅读 · 0 评论 -
第40课 前置操作符和后置操作符
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结值得思考的问题下面的代码有没有区别?为什么?上面的 i++ 和 ++i 真的有区别吗,我们到vs2019中调试一下查看反汇编代码通过观察反汇编代码发现, i++ 和 ++i 对应的汇编代码居然完全一样。说明 i++ 和 ++i 在本质上没有区别。意想不到的事实现代编译器产品会 对代码进行优化优化...原创 2020-02-24 21:17:10 · 131 阅读 · 0 评论 -
第39课 逗号操作符的分析
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结逗号操作符逗号操作符(,)可以构成逗号表达式逗号表达式用于 将多个子表达式连接为一个表达式逗号表达式的值为 最后一个子表达式的值逗号表达式中的 前 N-1 个子表达式可以没有返回值逗号表达式按照 从左向右的顺序 计算每个表达式的值实验代码测试逗号操作符#include <iostream>#i...原创 2020-02-23 21:51:54 · 231 阅读 · 0 评论 -
第38课 逻辑操作符的陷阱
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结潜规则关于逻辑运算符的原生语义操作数只有两种值(true 和 false)逻辑表达式 不用完全计算就能确定最终值最终结果只能是 true 或者 false编程实验下面来写一段代码来测试逻辑表达式#include <iostream>using namespace std;int func(...原创 2020-02-23 21:10:25 · 124 阅读 · 0 评论 -
第37课 智能指针分析
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结永恒的话题内存泄露动态申请堆空间,用完后不归还C++ 语言中 没有垃圾回收 的机制指针 无法控制 所指堆空间的生命周期...原创 2020-02-23 19:38:21 · 206 阅读 · 0 评论 -
第36课 经典问题解析三
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结问题一关于赋值的疑问什么时候需要重载赋值操作符?编译器是否提供默认的赋值操作?编译器为第个类 默认重载了赋值操作符默认的赋值操作符 仅完成浅拷贝当需要进行 深拷贝时必须重载赋值操作符赋值操作符与拷贝构造函数 有相同的存在意义...原创 2020-02-23 12:18:10 · 209 阅读 · 0 评论 -
第35课 函数对象分析
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结为什么要引入函数对象,因为函数对象有很好的封装性,可以避免普通函数存在的各种问题。示例假如有这样一个需求:编写一个函数,实现如下功能:1.函数可以获得斐波那契数列每项的值2. 每调用一次返回一个值3. 函数可根据需要重复使用实现代码#include <iostream>using namespa...原创 2020-02-23 10:21:01 · 115 阅读 · 0 评论 -
第34课 数组操作符的重载
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结重载数组访问操作符数组访问操作符([ ])只能通过类的 成员函数重载重载函数 能且仅能 使用一个参数可以定义不同参数的 多个重载函数数组访问符 是 C/C++ 中的 内置操作符数组访问符的原生意义是 数组访问 和 指针运算编程实验编写一个类,实现数组访问操作符成员函数#include <i...原创 2020-02-22 17:16:49 · 125 阅读 · 0 评论 -
第33课 C++ 中的字符串类
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结标准库中的字符串类C++ 语言 直接支持 C 语言的所有概念C++ 语言中 没有原生的字符串类型C++ 标准库提供了 string 类型string 直接支持 字符串连接string 直接支持 字符串的大小比较string 直接支持 子串查找和提取string 直接支持 字符串的插入和替换字符串 与 数...原创 2020-02-22 15:51:25 · 118 阅读 · 0 评论 -
第32课初探C++标准库
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结前面的课程中我们学习了操作符的重载,那么 << 和 >> 操作符可以重载吗?我们来写一个类,重载 << 操作符来实现将整数和字符输出到控制台的功能。实验代码#include <stdio.h>char endl = '\n';class Console{priva...原创 2020-02-22 10:34:34 · 179 阅读 · 0 评论 -
第31课 完善的复数类
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结本节课主要是对操作符重载成员函数的练习,实现了一个完善的复数类实验代码Complex.h#ifndef _COMPLEX_H_#define _COMPLEX_H_class Complex{ double a; double b;public: Complex(double a = 0...原创 2020-02-22 08:50:30 · 172 阅读 · 0 评论 -
第30课 操作符重载的概念
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结操作符重载C++ 中的 重载 能够 扩展操作符的功能操作符的重载 以函数的方式进行本质:用 特殊形式的 函数扩展操作符的功能通过 operator 关键字可以定义 特殊的函数operator 的本质是 通过函数重载操作符语法:实验编程根据上面的 重载操作符 语法,编写一个函数重载 ‘+’ 操作符,...原创 2020-02-21 20:15:54 · 166 阅读 · 0 评论 -
第29课 类中的重载函数
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结函数重载回顾函数重载的 本质为相互独立的不同函数C++ 中通过 函数名 和 函数参数 确定函数调用无法 直接通过 函数名 得到重载函数的 入口地址函数重载 必然发生在同一个作用域中类中的成员函数可以进行 重载构造函数的重载普通成员函数的重载静态成员函数的重载编程实验我们编写一个代码,分别来完成构造...原创 2020-02-21 16:54:35 · 197 阅读 · 0 评论 -
第28课 友元的尴尬能力
本文内容来自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结友元的概念什么是 友元 ?友元是 C++ 中的 一种关系 友元关系发生在 函数与类之间 或者 类与类之间友元关系是 单项的, 不能传递友元的用法在类中以 friend 关键字声明友元类的友元可以是 其它类或者具体函数友元 不是 类的一部分友元 不受 类中访问级别的限制友元可以直接访问具体类的所有成...原创 2020-02-21 13:11:56 · 167 阅读 · 0 评论 -
第27课 二阶构造模式
本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结构造函数的回顾关于构造函数类的 构造函数 用于对象的 初始化构造函数 与类同名并且没有返回值构造函数在对象定义时 自动被调用问题如判断 构造函数 的执行结果?在构造函数中执行 return 语句会发生什么?构造函数执行 结束是否意味着 对象构造成功?为什么了回答这几个问题,我们编写一个构造函数,并且构...原创 2020-02-21 10:24:39 · 156 阅读 · 0 评论 -
第26课 类的静态成员函数
本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结静态成员函数在 c++ 中可以定义 静态成员函数静态成员函数是类中 特殊的成员函数静态成员函数 属于整个类所有可以 通过类名直接访问 公有静态成员函数可以 通过对象名访问 公有静态成员函数静态成员函数的定义直接通过 static 关键字修饰成员函数静态成员函数 vs 普通成员函数编程实验小结...原创 2020-02-20 18:22:19 · 168 阅读 · 0 评论 -
第25课 类的静态成员变量
本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结成员变量的回顾通过 对象名 能够访问 public 成员变量每个对象的 成员变量 都是 专属的成员变量 不能 在对象之间 共享静态成员变量在 C++ 中可以定义 静态成员变量静态成员变量 属于整个类所有静态成员变量的 生命期不依赖于任何对象可以 通过类名直接访问 公有静态成员变量所有对象共享类的静...原创 2020-02-20 08:55:13 · 150 阅读 · 0 评论