随笔分类 - C++
摘要:转眼间,C20的标准已经发布快两年了。不少C的开源项目也已经将标准升级到最新的C20了,笔者也开启了新标准的学习历程了。所以借这系列的博文,记录下笔者学习新标准的一些心得与吐槽~~ 作为C20系列的第一篇开篇之文,就要从千呼万唤始处理的concept聊起了,后续很多新的feature的实现,也仰赖新
        阅读全文
            
摘要:乍一看这个标题很玄乎,但是其实这只是涉及一个很简单的CPP的模板推导的知识点。 笔者近期进行CPP开发工作时,在编译时遇到了如下的模板类型的推断错误:note: candidate template ignored: deduced conflicting types for parameter T
        阅读全文
            
摘要:C++14在标准库里添加了一个很有意思的元函数: std::integer_sequence。并且通过它衍生出了一系列的帮助模板: std::make_integer_sequence, std::make_index_sequence, std:: index_sequence_for。在新的黑魔
        阅读全文
            
摘要:Name Mangling,直接翻译过来为名字改写 。它是深入理解 C++ 编译链接模型的必由之路。 笔者近期进行数据库开发工作时,涉及到MySQL客户端的编译链接的问题,通过重新厘清了之前理解一知半解的Name Manging,解决了让人抓狂的编译链接问题。 接下来,和大家聊聊C++的Name M
        阅读全文
            
摘要:CRTP,奇特的递归模板模式 (Curiously Recurring Template Pattern) 是 C++ 的一种看起来很怪异的模板编程技巧。 它通过继承和模板的联合应用,实现了一种"看似"继承自己的语法。这种编程的技法,无论是在STL还是Boost之中都被大量使用。像它的名字一样,看起
        阅读全文
            
摘要:笔者入职百度时,二面面试官的让我聊聊C++之中的 volatile关键词 。volatile在Java和C++之中的差别可谓是 天差地别 ,我只是简单聊了聊Java之中的 volatile ,面试官对我的回答并不满意。后续学习 "《C++ Prmier》" 时,对 volatile 的理解也是云里雾
        阅读全文
            
摘要:写 C++的同学想必有太多和内存打交道的血泪经验了,常常被 C++的内存问题搅的焦头烂额。( 写 core 的经验了 )有很多同学一见到 core 就两眼一抹黑,不知所措了。笔者 入" 坑 "C++之后,在调试 C++代码的过程之中,学习了不少调试代码内存的工具。希望借这个机会来介绍一下笔者常用的工
        阅读全文
            
摘要:正式工作之后,公司对于单元测试要求比较严格。(笔者之前比较懒,一般很少写完整的单测~~)。作为一个合格的开发工程师,需要为所编写代码编写适量的 单元测试 是十分必要的,在实际进行的开发工作之中,TDD( Test drivern development ) 是一种经过实践可行的开发方式。 编写单元测
        阅读全文
            
摘要:笔者近期在工作之中编程实现一个Cache结构的封装,需要使用到C++之中的 互斥量Mutex ,于是花了一些时间进行了调研。( 结果对C++标准库很是绝望.... )最终还是通过利用了Boost库的 shared_mutex 解决了问题。借这个机会来聊聊在C++之中的多线程编程的一些 “坑” 。 1
        阅读全文
            
摘要:C++是一门 弱类型 的语言,提供了许多复杂和灵巧类型转换的方式。笔者之前写的Python与Go都是 强类型 的语言,对这种弱类型的设计实在是接受无力啊~~ ( 生活所迫,工作还得写C++啊~~)C++语言提供了四种类型转换的操作: static_cast,dynamic_cast,reinterp
        阅读全文
            
摘要:在学习C系列语言的过程之中,理解C/C++的复杂声明一直是初学者很困扰的问题。笔者初学之时也深受困扰,对很多规则死记硬背。后续在阅读 《C专家编程》 之后,尝试在编译器的角度来理解C/C++的声明解析,并且编写代码将这部分逻辑串联起来,之后再看到许多看似复杂的声明,也能够很好的理解和消化了。 1.复
        阅读全文
            
摘要:C++11的版本在类型系统上下了很大的功夫,添加了诸如 auto,decltype,move 等新的关键词来简化代码的编写与降低阅读代码的难度。为了更好的理解这些新的语义,笔者确定通过几篇文章来简单窥探一下C++类型系统的冰山一角,如果加深了对C++类型系统的理解,想必大家也能够更好的应用由C++1
        阅读全文
            
摘要:C++11的版本在vector容器添加了 emplace_back方法 ,相对于原先的push_back方法能够在一定程度上提升vector容器的表现性能。所以我们从STL源码角度来切入,看看这两种方法有什么样的区别,新引进的方法又有什么可学习参考之处。 1.emplace_back的用法 empl
        阅读全文
            
摘要:上一篇C++的博客是Long Long ago了,前文讲到在看 Lambda表达式 的内容。笔者首次接触Lambda表达式应该是学习Python语言的时候,当时也不太明白这种表达方式的精髓,后续接触了Scala与Java8的链式调用与Lambda结合的方式,深陷无法自拔。所以借上一篇闭包的内容。我们
        阅读全文
            
摘要:本来说好要聊一聊命名空间的,因为最近在看C++lambda表达式的内容,所以借这个机会我们来好好聊一聊C++的闭包。 1.什么是闭包? 闭包(closure) 是函数式编程的重要的语法结构。 闭包的概念其实很简单,一言以蔽之:闭包是带有上下文的函数。说白了,就是有状态的函数。也就是说一个 局部变量 
        阅读全文
            
摘要:在进行C++类编写的过程之中,通常会涉及到类的拷贝构造函数与类的赋值函数。初涉类编写的代码,对于两类函数的用法一直是挺让人困惑的内容。这篇文章我们会详细来梳理拷贝构造函数与赋值函数的区别。 1.调用了哪个函数? 上述两种函数的使用和C++之中类的定义紧密相关,所以我们先定义一个类: java cla
        阅读全文
            
摘要:关于 Explicit 还是 Implicit 一直是编程语言中能让程序员们干起架的争议。那些聪明的老鸟总是觉得Implicit的规则让他们能够一目十行,减少样板代码的羁绊。而很多时候,Implicit的很多规则会让新手或者是合作开发的搭档痛苦不堪。文章的标题也写明了笔者的态度,显式的在代码之中指明
        阅读全文
            
摘要:C++作为一门面向对象的语言,自然具备了面向对象的三大特征: 封装,继承,多态 。在学习多态性质的过程中,发现了C++与其他语言很大的区别(坑?)。在C++中的=操作符的使用与C++呈现的内存模型似乎并不是我所习惯的模式,在拷贝与引用两个不同操作之间摇摆,还是很容易写出存在问题的代码,所以也就引出了
        阅读全文
            
摘要:const作为C与C++共有的关键字,很多使用的方式大同小异。但由于C++是一门面向对象的语言,在类和对象中有更多的使用规则。之前学习C语言的时候就被const这个关键字搅得焦头烂额,正巧也借这篇文章做个完整的小结。 1.const关键字: const 关键字,翻译成中文是常量,常数的意思。所以在绝
        阅读全文
            
摘要:之前因为都在忙着毕业的开题答辩与投稿论文的事宜,一直没有时间更新这个系列的文章。师弟看了上一篇雾中风景的文章,希望我继续把这个系列的文章写下去。坦白说,C++的特性很多,这也不是教学指南的文章,我会选取一些自己在学习C++过程之中值得探讨的问题和大家聊一聊,来抛砖引玉。好的,今天先放点开胃菜,和大家
        阅读全文
            
 
                     
                    
                 
                    
                
 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号