C++
文章平均质量分 93
小丑小丑小丑
这个作者很懒,什么都没留下…
展开
-
C++11和POSIX线程库线程互斥与线程同步编程(锁,条件变量,信号量)
文章目录完成两个线程通过条件变量实现交替打印的控制锁+条件变量二元信号量对比一下条件变量和二元信号量按序打印条件变量版二元信号量版生产者消费者条件变量+锁(C++11)多元信号量(有点绕)条件变量和多元信号量的对比前言:用一些习题来说明这三个东西怎么写。说实话,编写线程同步代码并不简单。完成两个线程通过条件变量实现交替打印的控制锁+条件变量不管是C++11还是POSIX,套路都是一样的首先要强调的两点:1.缓冲区队列是临界资源,因此进入就要加锁2.条件变量是临界资源,进行判断条件是否满足和原创 2022-05-12 22:22:24 · 1037 阅读 · 1 评论 -
C++4种类型转换
文章目录static_castreinterpret_castconst_castdynamic_castexplicitRTTIstatic_cast相近类型的转换。比如double变成int之类的模板写成转换后的类型,括号内写要转换类型的东西int a = static_cast<int>(3.14);reinterpret_cast把int*变成intint b = reinterpret_cast<int>(&a);ps:这里无法用static原创 2022-05-05 11:17:31 · 131 阅读 · 0 评论 -
C++智能指针
文章目录RAIIauto_ptrunique_ptrshared_ptruse_count()删除器循环引用weak_ptrRAIIRAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源.也就是说对象会自己回收资源有两个好处:不需要显式地释放资源。采用这种方式,对象所需的资源在其生命期内始终保持有效。之前讲的lock_guard和unique_lock都是采用了RAII技术。其实本质上就是把这些资源封装成一个类,创建对象原创 2022-05-05 10:33:08 · 932 阅读 · 0 评论 -
C++11一些新功能
文章目录初始化列表decltypedefault & delete右值引用lambda表达式lambda的原理lambda表达式的类型可变参数包包装器C++线程库threadconstructorjoin和detachatomicmutexlock_guard和unique_lockcondition_variable初始化列表对象可以用大括号来初始化int main(){ int x = { 10 }; vector<vector<int>> v = { {1,原创 2022-05-03 15:35:53 · 1702 阅读 · 0 评论 -
C++11右值引用
文章目录左值和右值左值,右值与引用的关系右值的特殊点左值引用的应用场景和短板移动语义关于move完美转发(&& 和 forward)总结左值和右值一般没有明确的定义。左值有以下性质:左值可以取地址左值可以修改(除了const的左值)左值可以放在等号左边,也可以放在等号右边右值有以下性质:右值不可以取地址右值不可以修改右值只能放在等号右边最重要的性质是左值可以取地址,右值不可以取地址。常量,表达式的返回值,非左值的函数返回值是右值如下:10x + y;原创 2022-05-02 20:32:08 · 1544 阅读 · 0 评论 -
特殊类创建
总结:特殊类创建流程 = 私有构造函数+静态成员文章目录创建一个只能在堆上创建对象的类创建一个只能在栈上创建对象的类创建一个不允许拷贝对象的类创建一个不允许被继承的类单例模式饿汉单例懒汉单例创建一个只能在堆上创建对象的类方法:先把构造函数私有,这样就不能让用户随意创建对象了。然后我们再用静态成员来进行操作。class HeapOnly{public: static HeapOnly* createObj() { return new HeapOnly(); }private:.原创 2022-05-02 10:18:01 · 356 阅读 · 0 评论 -
map,multimap,set,multiset的使用(仿函数的使用)
前言:讲一些平常挺少用的但是也挺重要的东西文章目录maprbegin&rend范围forinsert与[]find&count仿函数multimapset和multisetmaprbegin&rend反向迭代器,可以反向遍历map。ps:反向迭代器的迭代器类型是reverse_iterator,别写错了demo:int main(){ string a[] = { "apple", "banana", "watermelon" }; map<string.原创 2022-04-29 11:01:54 · 313 阅读 · 0 评论 -
C++多态(复习用)
文章目录多态代码如何写协变和析构函数的重写final和override(C++11)重载,隐藏(重定义),覆盖(重写)多态代码如何写总结:父类用指针或引用指向子类(不用不行)子类进行虚函数重写class Person{public: virtual void f() { cout << "person" << endl; }};class Stu : public Person{public: virtual void f()//子类的virt原创 2022-04-26 11:49:14 · 142 阅读 · 0 评论 -
C++继承(复习用)
文章目录三种继承关系与三种访问限定符的关系父类和子类对象赋值转换(切片)隐藏的定义及和重载的区别子类的默认构造函数怎么写子类构造函数子类拷贝构造函数子类赋值运算符重载子类析构杂项(了解即可)菱形继承数据冗余和二义性虚继承三种继承关系与三种访问限定符的关系总结一下:说了3个东西,知道的可以跳过只用public继承父类不要用private成员,因为子类无法直接访问继承与访问限定符的关系是权限缩小类成员/继承方式public继承protected继承pri原创 2022-04-24 12:24:25 · 1162 阅读 · 0 评论