
C++编程
聊聊技术
一线互联网后端资深开发工程师,专注搜索工程方向技术及分布式架构设计。
欢迎关注微信公众号【来杯咖啡聊聊技术】,知乎号同名,不定时分享。
展开
-
unique_ptr独占对象浅析
在C++11中有两个智能指针类型来管理动态对象,share_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指对象。我们知道指针或引用在离开作用域时是不会进行析构的,但是类在离开作用域时会自动执行析构函数,所以我们可以用一个类来实现指针指针(unique_ptr本质上是一个类,只是可以像一个指针一样使用)。因此我们可以通过析构函数调用delete去释放资源。那么如何实现“独占”呢?我们可以在类中把拷贝构造函数和赋值运算声明为private,这样就不可以对指针指向进行拷贝了,也就不能产生指原创 2021-02-21 21:48:54 · 312 阅读 · 0 评论 -
继承和派生
1、相关概念在C++中可重用性(software reusability)是通过继承(inheritance)这一机制来实现的。一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。从已有的类(父类)产生一个新的子类,称为类的派生。派生类是基类的具体化,而基类则是派生类的抽象。基类名前面有public的称为“公用继承(public inheritance)”。声明派生转载 2014-12-23 16:08:32 · 461 阅读 · 0 评论 -
C++ 各种排序算法实现
和很多计算机系的同学们一样,我在大学二年级时也学了《数据结构》这门课。当时我的老师是一个中科大的博士,现在已经是教授了。他在课上曾经这样评价这门课:《数据结构》几乎是所有计算机课程的基础课,如果把这门课学好了,其他的专业课就不成问题了。还有,IT公司的面试经常涉及到数据结构的相关知识,该课程的重要性由此可见。但是当时年少无知根本没好好学习,等到笔试,面试时才幡然悔悟。下面的内排序算法可算是数据结构转载 2015-05-09 20:57:37 · 583 阅读 · 0 评论 -
ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题
在ubuntu vim下编辑如下代码(代码来自《C++标准程序库》p107):复制代码#include #include #include #include #include using namespace std;int main(){ vector coll; /* read all words fro转载 2015-05-22 13:38:22 · 1053 阅读 · 0 评论 -
select和epoll 原理概述&优缺点比较
注明出处:http://blog.youkuaiyun.com/jiange_zh/article/details/50811553这个问题在面试跟网络编程相关的岗位的时候基本都会被问到,刚刚看到一个很好的比喻:就像收本子的班长,以前得一个个学生地去问有没有本子,如果没有,它还得等待一段时间而后又继续问,现在好了,只走一次,如果没有本子,班长就告诉大家去那里交本子,当班长想起要取本转载 2018-01-25 16:30:43 · 2983 阅读 · 2 评论 -
c++简单线程池实现
线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他的任务使用,当线程池中的线程都在处理任务时,就没有空闲线程供使用,此时,若有新的任务产生,只能等待线程池中有线程结束任务空闲才能执行,下面是线程池的工作原理图:我们为什么要使用线程池呢?简单来说就是线...转载 2018-02-21 10:03:50 · 636 阅读 · 0 评论