
C++
文章平均质量分 93
chirpyli
数据库内核开发工程师
展开
-
Socket网络编程之组播实现(C++,Rust)
实际项目中,经常需要使用组播,本文给出了组播代码示例......原创 2017-07-11 08:01:51 · 14018 阅读 · 4 评论 -
STL——迭代器
理解迭代器是学习STL的必经之路,迭代器可以看做是指针的抽象,相当于指针,不同的是,迭代器将指针的操作抽象出来,使之能适应不同数据类型,不同的容器类型。比如,常见的数组和链表,数组是连续存储的,而链表则不是,对于遍历操作,相同的是都需要从起始地址开始,到结束,不同的是operator++()的具体实现形式不同。如果能够将访问不同容器类型的指针抽象出来,就可以将容器与算法分离。下面是一个为数组容器、链原创 2017-07-31 10:50:51 · 489 阅读 · 0 评论 -
如何查看C++内存布局(VS2012)
学习C++对象模型时,学习虚函数时,需要弄懂C++内存布局,通过编程查看C++内存布局有助于我们理解这些概念。使用Visual studio的两个命令参数即可查看:/d1 reportAllClassLayout 或者 reportSingleClassLayoutXXX,其中XXX代表要查看的类名。(备注:d1,是数字1不是字母l)VS2012中设置如下: 项目->属性->配置属性->c/c++原创 2017-07-13 10:53:26 · 1428 阅读 · 0 评论 -
C++虚函数的工作原理
相关概念理解讨论静态绑定与动态绑定,首先需要理解的是绑定,何为绑定?函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。理解了绑定后再理解静态与动态。静态绑定:指在程序编译过程中,把函数调用与响应调用所需的代码结合的过程,称为静态绑定。发生在编译期。动态绑定:指在执行期间判断所引用对象的实际类型,根据实际的类型调用其相应的方法。程序运行过程中,把函数调用与响应调用所需的代码相原创 2017-07-12 17:17:58 · 1778 阅读 · 0 评论 -
C++强制类型转换:static_cast,dynamic_cast,const_cast,reinterpret_cast
C++中的类型转换C++中的类型转换分为两种:隐式类型转换;显式类型转换。 关于隐式转换,大家都懂,重点是显式转换。在标准C++中有四个类型转换符:static_cast、dynamic_cast、const_cast和reinterpret_cast;下面将对它们一一的进行总结。const_cast (expression) :常量指针被转换成非常量指针 static_cast (e原创 2017-07-15 10:41:09 · 615 阅读 · 0 评论 -
C++并发编程——在运行时选择线程数量
在编写多线程程序时,运行多少线程比较合适呢?线程并不是越多越好,理论上,硬件支持多少线程数,就开多少个线程比较合适,有的比如完成端口IOCP中建议开2倍线程数,因为考虑到有些线程可能会挂起等情况。但最重要的一条,首先要获取当前硬件支持的线程数,通常情况下为CPU核数。std::thread::hardware_concurrency(); //获取当前CPU核心数量代码示例: 以下代码为st原创 2017-07-31 18:27:22 · 8151 阅读 · 0 评论