C++ template
C++模板C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 C++函数模板的使用所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。 由以下三部分组成: 模板说明 + 函数定义 + 函数模板调用 template < 类型形式参数表 > 类型 函数名 ( 形式参数表 ) { //语句序列 } #include <iostream>using namespace std; /*int Max(int a, int b){ ...
C++ stream
C++流基本概念主要是文件操作比较重要 用户数据不能永久保存, 程序关闭后, 数据消失. 因此需要把一些重要的东西存储在文件之中 IO: 向设备输入数据和输出数据 设备: 文件 控制台 特定的数据类型(stringstream) C++之中的IO库 文件流文件流: 对文件进行读写操作头文件: <fstream> 类库: ifstream: 文件输入(读文件) ofstream: 文件输出(写文件) fstream: 文件输入或输出 对文本文件流读写,打开标识(可以使用位操作 | 组合起来): ios::in : 读方式打开文件 ios:out : 写方式打开文件 ios::trunc : 如果此文件已经存在, 就会打开文件之前把文件长度截断为 0 ios::app : 尾部最加方式(在尾部写入) ios::ate : 文件打开后, 定位到文件尾 ios::binary :...
C++ STL
简单的学习以下C++的STL基本概念:STL主要分为分为三类: algorithm(算法) - 对数据进行处理(解决问题)步骤的有限集合 container(容器) - 用来管理一组数据元素 Iterator (迭代器) - 可遍历STL容器内全部或部分元素的对象 容器 <vector>,<list>,<deque>,<set>,<map>,<stack>...
C++ socket
C++Socket学习资料:https://subingwen.cn/linux/socket/ socket编程Socket套接字由远景研究规划局(Advanced Research Projects Agency,...
C++polymorphism
C++多态基本概念允许一个接口被多种不同的实现使用 虚函数,实现多态。 #include <iostream>using namespace std; class Father {public: virtual void play() { cout << "到 KTV 唱歌..." << endl; }}; class Son :public Father {public: virtual void play() { cout << "一起打王者吧!" << endl; }}; void party(Father **men, int n) { for (int i = 0; i<n; i++) { men[i]->play(); }} int main(void)...
C++ reference
C++引用在 C++ base 之中已经介绍了一些 引用的基本概念,本来我以为引用就是我想象的那样(就是最为基础的用法&)但是今天做线程池的项目的时候涉及到了左值引用和右值引用的概念 这个概念不是很懂,因此拿出来学一学 说一说 引用的基础用法就是咱们平时用的那种,这种其实是一种左值引用,这个概念下面再说 #include<iostream>using namespace std;int main(){ int i = 10; int &j = i; cout << "i = " << i << " j = " << j << endl; cout << "i的地址为 " << &i << endl; cout << "j的地址为 " << &j << endl; return...
C++ pointer
C++指针主要介绍一些C++指针的一些知识,基础的就不做介绍了 智能指针参考:https://blog.csdn.net/weixin_43908419/article/details/131060402 什么是智能指针智能指针RAII(Resource Acquisition Is Initialization),是一种利用对象的生命周期来管理资源的技术。如果我们采用传统的new/delete来申请和释放资源,如果忘记调用delete,或者在调用delete之前程序抛出异常,都会导致内存泄漏问题 最简单的例子: void Func(){ int* p1 = new int[5]; int* p2 = new int[5]; //这里Div函数会抛异常,main函数会捕获异常,delete[]没有执行,引发内存泄漏 int ret = Div(5, 0); delete[] p1; delete[] p2;} Func函数中的new...
C++ operaOvlod
C++运算法重载C/C++的运算符,支持的数据类型,仅限于基本数据类型。 问题: 一头牛+一头马 = ?(牛马神兽?) 一个圆 +一个圆 = ? (想要变成一个更大的圆) 一头牛 – 一只羊 = ? (想要变成 4 只羊,原始的以物易物:1 头牛价值 5 只羊) 解决方案:使用运算符重载 那些可以重载 为了防止对标准类型进行运算符重载, C++规定重载运算符的操作对象至少有一个不是标准类型,而是用户自定义的类型比如不能重载 1+2 但是可以重载 cow + 2 和 2 + cow // cow 是自定义的对象 不能改变原运算符的语法规则, 比如不能把双目运算符重载为单目运算 不能改变原运算符的优先级 不能创建新的运算符,比如 operator*就是非法的, operator是可以的 不能对以下这四种运算符,使用友元函数进行重载= 赋值运算符,()函数调用运算符,[...
C++ friend
C++友元使用前提:某个类需要实现某种功能,但是这个类自身,因为各种原因,无法自己实现。 需要借助于“外力”才能实现。 友元的两种使用形式:友元函数、友元类。 友元函数使用全局函数作为友元函数全局函数可以直接访问类内的私有成员!!!!! #include<iostream>#include <sstream>using namespace std;class Computer { public: Computer(){ cpu = "i7"; }; // 使用全局函数作为友元函数 friend void upgrade(Computer* computer); string description(){ stringstream ret; ret << "CPU:" << cpu; return ret.str(); };private: ...
C++ exception
C++异常处理异常无处不在,程序随时可能误入歧途!C++ 提出了新的异常处理机制! 异常是一种程序控制机制,与函数机制互补 函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它可以在出现“意外”时中断当前函数,并以某种机制(类型匹配)回馈给隔代的调用者相关的信息. 传统错误处理机制通过函数返回值来处理错误 #include <stdio.h>#include <stdlib.h> #define BUFSIZE 1024 //实现文件的二进制拷贝int copyfile(const char *dest,const char *src){ FILE *fp1 = NULL, *fp2 = NULL; //rb 只读方式打开一个二进制文件,只允许读取数据 fopen_s(&fp1, src, "rb"); if(fp1 == NULL){ return -1; } //wb 以只写的方式打开或新建一个二进制文件,只允许写数据。 fopen_s(&fp2,...