C++
zhigang li
LZG
展开
-
2020.12.7 第19课 C++设计模式
2020.12.7 第19课 C++设计模式01_设计模式原则1.设计类的时候,类与类之间存在数据交互,尽量采用抽象2.多采用组合方式,减少继承3.数据成员不要采用公有形式,如果要访问,采用接口int& getX();模式在一定环境中解决某一问题的方案,包括三个基本元素–问题,解决方案和环境。 大白话:在一定环境下,用固定套路解决问题。设计模式(Design pattern**)**是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可原创 2020-12-08 19:04:33 · 86 阅读 · 0 评论 -
2020.12.4 第18课 C++smtp邮件发送
2020.12.4 第18课 C++smtp邮件发送01_准备动作#pragma once //实现和声明都在同一个头文件hpp#include <string>#include <iostream>using namespace std;class Base64{public: static char ConvertToBase64(char uc) { if (uc < 26) { r原创 2020-12-08 19:04:00 · 1356 阅读 · 0 评论 -
2020.12.03 第17课 TCP和UDP
2020.12.3 第17课 TCP和UDPOSI(开放式系统互联通信)七层网络模型(参考模型 英语:Open System Interconnection Reference Model,缩写为 OSI)OSI网络模型是一个开放式系统互联的参考模型。通过这个参考模型,用户可以非常直观地了解网络通信的基本过程和原理。OSI参考模型如下图所示01_TCP简单实现(TCP(Transmission Control Protocol)传输控制协议用于保证被传送信息的完整性)1.TCPServer/原创 2020-12-04 13:23:08 · 94 阅读 · 0 评论 -
2020.11.27 第15课 C++新标准模板篇
2020.11.27 第15课 C++新标准模板篇01_初始列表initializer_list#include <iostream>#include <vector>#include <initializer_list>using namespace std;/* 初始列表 {1,2,3,4,5}; initializer_list有两种构造方式 1.当初始化的时候使用的是大括号的初始化,被自动构造,包括函数调用和赋值的 2.当涉及到for(ini原创 2020-12-01 12:13:24 · 100 阅读 · 0 评论 -
2020.11.26 第14课 C++新标准与正则库
2020.11.26 第14课 C++新标准与正则库01_基础的数据类型改变#include <iostream>#include <vector>#include <string>using namespace std;void print(){ cout << "auto" << endl;}class MM{public: MM(string name,int age):name(name),age(age){}原创 2020-11-27 16:04:43 · 63 阅读 · 0 评论 -
2020.11.23 第13课 C++智能指针
2020.11.23 第13课 C++智能指针01_auto_ptr与unique_ptr-------------------------------- 智能指针 4个模板类 1.auto_ptr C++11放弃 2.unique_ptr 3.shared_ptr 4.weak_ptr--------------------------------#include <iostream>#include <string>using namespace s原创 2020-11-27 16:03:49 · 100 阅读 · 0 评论 -
2020.11.20 第12课 STL算法篇
2020.11.20 第12课 STL算法篇一、STL算法总结 使用算法容器 重载一些标准 查找算法 adjacent_find : 查重复数,返回首个元素iter bianry_search: 二分查找 count: 区间统计 count_if: 范围查找统计个数 equal: 比较 equal_range :区间元素比较 find:区间查找元素 !!!!! find_first_of:区间查找第一次出现值 find_if : 条件查找 upper_bound:查找最后一原创 2020-11-21 22:26:19 · 111 阅读 · 0 评论 -
2020.11.18 第11课 STL迭代器篇
2020.11.18 STL迭代器篇一、内置迭代器------------------------------------------------- 类中类 类对象模仿指针的行为 作用:遍历容器 vector list map set 向量 双向链表 映射 集合 内置迭代器: 1.正向迭代器:iterator 2.反向迭代器:reverse_iterator 3.常正向/常反向 const_iterator const_reverse_iterator begin(原创 2020-11-19 01:49:33 · 66 阅读 · 0 评论 -
2020.11.16 第10课 STL容器篇
2020.11.16 第10课 STL容器篇一、STL简单描述----------------------------- 标准模板库 泛型编程库 standard template library algorithm算法 container容器 iterator迭代器 使用容器创建对象 #include <vector> //向量--->动态数组 不受内存限定-----------------------------二、vector 向量—>动态数组#inc原创 2020-11-18 22:22:58 · 115 阅读 · 0 评论 -
2020.11.15 第9课 C++异常处理机制
2020.11.15 第9课 C++异常处理机制一、基本异常处理---------------------------------------------------------- throw:抛出异常 try:检查异常 catch:捕获处理异常 1.任何东西都可以当作异常 错误也是异常的一种 2.异常处理机制 问题不在当前函数解决 3.抛出的异常,不处理,如果引发异常,会调用默认处理abort终止程序 4.try和catct不许是一起出现,必须{}------------原创 2020-11-17 01:42:25 · 78 阅读 · 0 评论 -
2020.11.11 第8课 C++io流
2020.11.11 第8课 C++io流一、虚继承 菱形继承:继承了相同父类 1.虚继承 2.子类的构造函数写法#include <iostream>using namespace std;class A{public: A(int a) :a(a) {}; int a;};class B :virtual public A{public: B(int a, int b) :b(b), A(a) {} int b;};class C :virtu原创 2020-11-16 11:42:02 · 81 阅读 · 0 评论 -
2020.11.09 第7课 C++虚函数和多态
2020.11.09 第7课 C++虚函数和多态一、虚函数和虚函数表 虚函数: 1.virtual 修饰的函数 2.没有虚构造函数 1.空的类占用的内存是1个字节 2.虚函数占用4个字节,无论多少个虚函数,类的内存只增加四个字节 了解内容,如何通过虚函数表的指针去访问函数 类的内存 某个对象的 指针指向 虚函数表 :类似于二维数组#include <iostream>using namespace std;class MM{public: //虚析构函数 v原创 2020-11-10 17:08:07 · 83 阅读 · 0 评论 -
2020.11.6 第06课 C++继承和派生
2020.11.6 第06课 C++继承和派生一、继承方式和继承权限问题 1.继承和派生 父类/基类 子类/派生类 2.class 子类名:继承方式 父类名 { }; 3.继承方式导致的权限问题 继承方式:public protected private 权限限定词 低----------------->高 3.1 继承方式只会加强父类属性在子类中权限的呈现权限 父类属性在子类的权限最低是继承方式 3.2 父类的私有属性可以被继承但是不能访问原创 2020-11-09 19:43:43 · 82 阅读 · 0 评论 -
2020.11.4 第5节 C++运算符重载
2020.11.4 第5节 C++运算符重载一、基本运算符重载 1.为什么有运算符重载 想要直接操作使用运算符去操作对象 赋予运算符新的含义,操作自定义类型 2.运算符重载的分类 2.1 友元重载 参数个数=操作数 2.2 类重载 参数个数=操作数-1 代表对象的行为 2.3 流运算符重载 输入输出流 2.4 特殊运算符的重载 3.运算符重载实质:函数调用 函数返回值类型 函数名(函数参数) { 函数体; } 函数名:operat原创 2020-11-06 19:56:50 · 74 阅读 · 0 评论 -
2020.11.12 第4节 特殊成员
2020.11.12 第4节 特殊成员一、const成员const 成员 const:不能修改 常属性 1.const 数据成员 //常数据成员 1.1 只能采用初始化参数列表的方式进行初始化 构造函数名(参数1,参数2,...):数据成员1(参数1),数据成员2(参数2)...{} 1.2 构造函数必须要初始化常数据成员 在学常量的时候,常量必须初始化 常量的基本规则 2.const 成员函数 //常成员函数 2.1 注意写法 const放原创 2020-11-03 12:13:16 · 79 阅读 · 0 评论 -
2020.10.26 第1课 C++与C的区别
2020.10.26 第01课 C++与C的区别C++与C的区别一、基本区别1.源文件改为.cpp2.头文件的改变2.1 标准的C++头文件: #include 2.2 包含C语言的头文件2.2.1 常规包含2.2.2 去掉.h 包含二、命名空间引入1.如何创建namespace 空间名{ int age;}2.学会调用2.1 常规调用:空间名::成员 :空间名::age 作用域分辨符2.2 using namespace 空间名; 用来省略前缀调用3.嵌套:学会使原创 2020-11-02 17:13:17 · 76 阅读 · 0 评论 -
2020.10.30 第3课 类和对象
2020.10.30 第3课 类和对象一、类和对象的定义与权限问题 类和对象 类:一些具有共同特征的事物的抽象 属性:(数据成员) 行为(操作,函数:成员函数) 对象:类的具体化 基本语法: class MM 关键字class { public: } 1.权限限定词 :限定类外对象对数据成员的访问 1.1 限定对象的访问权限 1.2 类外只能访问public:公有 公有接口 1.3 protected:保护+private:私有 2.构造函数 3.析原创 2020-11-01 09:51:59 · 68 阅读 · 0 评论 -
2020.10.28 第2课 C++与C的区别
2020.10.28 第2课 C++与C的区别一、结构体的基本区别#include <iostream>#include <string.h>using namespace std;struct MM 定义方式一样{ char name[20]; int age;};int main() { MM myMM = { "小仙女",18 }; 类型不需要struct关键字,用到类型的时候直接结构体名字即可 cout << myMM.n原创 2020-10-31 12:44:06 · 75 阅读 · 0 评论