C++
c++学习记录
tnan2522
这个作者很懒,什么都没留下…
展开
-
c++ 18 条件变量
条件变量在线程中,一个线程创建条件,一个线程当满足条件的时候才做某事,那么可以使用条件变量,条件变量相当于让当前的形参休眠,当条件满足的时候就会被唤醒,执行程序#include <thread>#include <unistd.h>#include "iostream"#include "mutex"# include "condition_variable"using namespace std;mutex m;condition_variable s;原创 2020-05-14 22:15:52 · 130 阅读 · 0 评论 -
c++ 17线程互斥量
互斥在线程中出现资源竞争是和正常的,如 :void run(){ while (1){ cout << "aa" << endl; sleep(1); }}void run2(){ while (1){ cout << "bb" << endl; sleep(1); }}int main() { thread t(run); t原创 2020-05-12 21:31:06 · 221 阅读 · 0 评论 -
c++ 16 map set thread
mapmap 就像是python中的字典一样,都是以键值对储存增map<string, string > m;m["aa"] = "hhh";//或m.insert({"bb" , "666"});m.insert(make_pair("cc" , "777"));删可以通过关键字来对map中的数据进行删除,需要使用map中的关键字 erasem.erase("bb");也可以使用迭代器来删除迭代器是为了表示容器中某个元素位置这个概念而产生的,相当于容器中元素的指针原创 2020-05-11 21:29:18 · 299 阅读 · 0 评论 -
c++ day 15模板编程,可变参数,容器
template模板变量在c++中,函数要接收参数的话就要先定义接收的参数的类型,而第一门语言是py的我始终觉得这很不通用,直到我学到了模板,模板就是定义一个变量,这个变量代表的是如何一种类型,如 int string double 类型, 这样用在函数中当做变量的类型就很方便了,template <typename T>T add(T a, T b){ return a+b;};这个T模板变量可以是任何一种数据类型, 不过在同一个函数的模板上, 这个模板变量只能是固定原创 2020-05-08 21:31:03 · 210 阅读 · 0 评论 -
c++ day14 异常处理。i/o操作
异常异常程序代码错误的时候产生的一种错误, 在其他语言中,如python, 在程序运行时如果有错误的话就会抛出异常,控制台上会爆出红色的错误信息,而c++没有, 只是将退出状态码设置为不是0,代表程序不是正常退出,这就使我们追踪bug有一定的影响异常捕获当我们觉得程序可能在哪个代码块上会出现异常的时候可以用try来对异常进行捕获, 防止该错误影响到程序的执行, try{ /...原创 2020-05-07 21:48:43 · 151 阅读 · 0 评论 -
c++ day 13智能指针, 宏变量,枚举
智能指针unique_ptrunique_ptr是唯一指针, 如果有这个指针进行包装其他的指针,当这个指针变量拷贝的时候会出现错误, 这是因为这个指针是唯一的,不允许被复制int main(){ int *i = new int(20); unique_ptr<int> p(i); unique_ptr<int> p1 = p; ...原创 2020-05-06 21:51:27 · 131 阅读 · 0 评论 -
c++ day 12虚函数,抽象类 智能指针
虚函数C++中的虚函数的作用主要是实现了多态的机制 , 有了虚函数就可以在父类的指针或者引用指向子类的实例的前提下,然后通过父类的指针或者引用调用实际子类的成员函数。这种技术让父类的指针或引用具备了多种形态。class teacher{public: virtual void sayhi(){ cout << "hello t" << endl...原创 2020-05-05 21:12:13 · 863 阅读 · 0 评论 -
c++ day 11多态 联编
多态字面意思就是多种形态,一般出现在继承中重写同名函数上,在 调用成员函数时,会根据调用函数的对象的类型来执行不同的函数静态多态静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合适的函数可以调用就调,没有的话就会发出警告或者报错动态多态它是在程序运行时根据父类的引用(指针)指向的对象来确定自己具体该调用哪一个类的虚函数。如在类的继承的时候 子类重写了父...原创 2020-05-05 19:56:40 · 119 阅读 · 0 评论 -
c++ day10 lambda 类继承
lambda在python中应用没有;进行代码范围约束,使用 lambda 只能写一行,功能有限,而在c++中可以通过;进行代码范围约束,可以有多行,[](int a ,int b)->int{return a + b ;}->int 也将可以不写,自动推导返回值,[] 是捕获列表, 如果在匿名函数中使用到其他外部的变量就需要用到捕获列表了[a] 表示值传递方式捕...原创 2020-05-04 23:07:56 · 395 阅读 · 1 评论 -
c++ day9 运算符重载
运算符重载其实就是一种 “语法上的方便” , 背后实际上是一种函数调用的方式, 调用的是重载的函数如 ,两个对象进行相加,一般情况下是不允许的, 但,通过运算符重载将 + 号替换为调用类中的函数就可以做到看上去的类相加了, 如:class stu{ int money; string name;public: stu(string name, int money)...原创 2020-04-29 22:07:32 · 96 阅读 · 0 评论 -
c++ day8移动构造 静态成员 友元
移动构造移动构造就是将一个对象中的指针变量赋值给新的对象,然后旧的对象放弃指针的指向class Student{public : int *age; Student():age(new int(18)){ cout << "执行构造函数~!~"<<endl; } //深拷贝 Student(const Stud...原创 2020-04-28 21:31:30 · 108 阅读 · 0 评论 -
C++ day7 初始化列表方式 委托构造 深浅拷贝
初始化在python 中创建实例对象的时候可以通过 init 方法对属性进行赋值, 而在 c++ 中也可以通过构建方法对属性初始化, 如:class student{ string name; int age; /* 1 //早期的方式 student(string name_val , int age_val){ name = name_...原创 2020-04-27 22:41:26 · 121 阅读 · 0 评论 -
c++ day 6左右值引用,面向对象
左值右值说到左值引用,要先明白什么是左值,左值就是储存这数据的变量, 可以获取到内存地址的变量, 这些变量取引用就是左值引用, 右值引用是不可取内存地址的操作,如,表达式,1+1 这种, 正常情况下左值引用只能绑定左值,右值引用只能绑定右值, 但是, const 关键字会让左值引用变得不同,它可以接收右值左值具有持久的状态,有独立的内存空间,右值要么是字面常量,要么就是表达式求值过程中创建的临...原创 2020-04-24 21:51:04 · 125 阅读 · 0 评论 -
C++ day5 指针与常量,函数指针
指针与常量指针常量指针常量就是一个指向常量的指针, 不能修改指针指向的值,但可以修改指针的指向, 让指针指向其他地址常量指针常量指针不能修改指针的指向,但可以修改指针指向的数据常量指针指向常量不能修改指针指向的值,也不能修改指针的指向函数指针函数也是可以被当做指针进行传递的,当一个函数被当做参数进行传递的时候,接收方的函数就可以使用该传递过来的函数了void aa(){cout...原创 2020-04-23 21:54:46 · 94 阅读 · 0 评论 -
c++ day4数组和指针的关系, 指针运算,结构体
数组和指针指针变量储存的是变量的内存地址,数组的地址就是数组所占据内存空间的第一块数据的地址,而数组的值是由数组所有元素的值构成,打印数组的时候会输出数组的第一个数据的指针, 可以说和指针有点联系, 但 数组 != 指针, int a[5] = {10}; int *p = a; std::cout << sizeof(a) << " ...原创 2020-04-22 21:22:32 · 140 阅读 · 0 评论 -
c++ day3 指针,栈内存,堆内存
指针在c++中指针就是 内存地址 (十六进制的数据), 它记录着内存空间的地址, 大小是8个字节指针的定义:int a = 10;int *pint;pint = &a;// 也可以int *pint = &a;其中 pint 指针变量储存的就是 a变量在内存中的地址, 可以通过*pint 解引用来效果 变量a 的值*pint = 20;正常来说 pint...原创 2020-04-21 21:03:02 · 291 阅读 · 0 评论 -
c++ day2
vectorvector 相当于一个可变的数组, 也是存储同一种类型的数据的集合, 不过它可以添加数据vector 定义:vector<int> name {};二维vector:vector<vector<int>> name {};跟数组差不多头文件在开发总不可能一个cpp文件就可以完成整个项目的, 所以,项目中会拆分很多个文件, 如何导...原创 2020-04-20 16:14:32 · 80 阅读 · 0 评论 -
C++ day1
格式每段代码结束都要跟随着一个 ;输出std::cout << “输出内容” << std::cout;输入std::cin >> 接收内容变量;变量定义每使用一个变量都得在它使用前先定义变量类型, 如int age;int num = 10;也可以使用自动推倒类型 autoauto age = 10;比较运算符>==&l...原创 2020-04-16 21:26:16 · 93 阅读 · 0 评论