
编程技巧和心得
文章平均质量分 90
borehole打洞哥
程序猿,代码狂热爱好者。外加骨灰级果粉
展开
-
C++杂谈(一)
《C++杂谈》系列第一篇,主要介绍了C++与C的关系、关于C++开发环境的一些讲解原创 2023-02-28 13:10:36 · 1063 阅读 · 1 评论 -
C++的缺陷和思考(七)
C++的缺陷和思考第七篇,完结篇,主要是总结和感受原创 2022-08-24 18:46:08 · 1827 阅读 · 8 评论 -
C++的缺陷和思考(六)
C++的缺陷和思考系列文章第六篇,主要介绍模板全特化、构造和析构调用虚函数问题、C++的3个经典二义性问题原创 2022-08-23 20:22:42 · 1600 阅读 · 5 评论 -
C++的缺陷和思考(五)
C++的缺陷和思考系列文章的第五篇,主要介绍new和delete、常量表达式、就地构造相关内容原创 2022-08-19 11:20:48 · 907 阅读 · 4 评论 -
C++的缺陷和思考(四)
C++的缺陷和思考(三)系列的第四篇。主要介绍私有继承、多继承、隐式构造、C风格字符串、char类型的问题。原创 2022-08-16 16:38:36 · 1401 阅读 · 4 评论 -
C++的缺陷和思考(三)
C++的缺陷和思考系列文章的第三篇。主要介绍auto推导策略、static关键字、POD类型和非平凡析构的问题原创 2022-08-15 16:52:46 · 1889 阅读 · 1 评论 -
C++的缺陷和思考(二)
C++缺陷和思考系列文章第二篇原创 2022-08-12 17:26:58 · 1539 阅读 · 4 评论 -
C++的缺陷和思考(一)
C++是一门古老的语言了,笔者作为C++专业程序员,想在这里分享一些C++的“缺陷”以及自己的心得体会原创 2022-08-09 20:05:12 · 3105 阅读 · 10 评论 -
C++的私有继承和EBO
Hello!大家好呀,近期逗比老师的一个学生问了我这样一个问题:“C++里的私有继承到底有什么意义?”不知道你有没有跟他一样的困惑。的确,我们在编写C++项目中,几乎是没有用过私有继承(这里包括protected继承和private继承),都是清一色的public继承。有的老师干脆直接告诉学生,你见到继承就是public,其他那俩是历史原因,当它不存在就好了。这种说法呢,其实也有一定道理,但也不全对。对的部分在于:C++中,确实只有public继承才表示的OOP理论中的“继承”,而私有继承其实对应的是O原创 2022-04-08 13:24:55 · 821 阅读 · 1 评论 -
std::vector扩容时为何进行深复制?
引子我们知道,std::vector之所以可以动态扩容,同时还可以保持顺序存储,主要取决于其扩容复制的机制。当容量满时,会重新划分一片更大的内存区域,然后将所有的元素拷贝过去。但是笔者却发现了一个奇怪的现象,std::vector扩容时,对其中的元素竟然进行的是深复制。请看示例代码:#include <iostream>#include <vector>struct Test { Test() {std::cout << "Test" <<原创 2021-08-06 13:33:20 · 2839 阅读 · 2 评论 -
深入解析C++的type_traits
C++的type_traits是一套纯粹编译期的逻辑,可以进行一些类型判断、分支选择等,主要用于模板编程。使用type_traits并不难,但是我们希望能够更加深入了解其实现方式,与此同时,可以更进一步体验C++的模板编程。本篇文章旨在引导大家自行实现type_traits的基础代码。模板编程不像常规的代码,可以有if-else这些流控制语句,我们需要充分利用模板、模板特例、类型转换等特性来实现编译期的一系列判断和类型转换。定义基础常量第一步,我们需要定义true和false两个常量,所有的type原创 2021-08-03 18:11:38 · 3645 阅读 · 0 评论 -
C++17之std::apply与std::make_from_tuple
C++17之std::apply与std::make_from_tupleC++17中有两个有意思的语法,是关于std::tuple(或std::pair、std::array等)与函数参数转化的问题的。今天这篇文章我们来研究一下。std::applystd::apply最主要的作用就是把tuple转化为函数参数,然后去调用函数。请看例子:#include <iostream>int sum(int a, int b, int c) { return a + b + c;}原创 2021-07-29 20:07:12 · 5776 阅读 · 0 评论 -
C++中的命名空间、using用法、区域运算符(::)详解
大家好!逗比老师又来给大家逗比啦!今天我们来逗比的内容,是C++中特别特别特别**疼的内容,这部分内容尤其对于C程序员、OC程序员来说尤为费解。那么废话不多说,我们先来进入第一个内容——命名空间。先问你个问题哈,你是不是在写C++代码的时候,脊髓反射式的写一个using namespce std; 但其实你并不了解这句话什么意思?哈哈,如果你中枪了,那么你就更需要好好把它搞清楚了。那么什么原创 2016-05-03 23:43:18 · 9259 阅读 · 4 评论 -
使用C、C++、Objective-C三语言混编时的注意事项
在使用Objective-C,C++和C三语言混编的时候,一定会发现许多奇奇怪怪的问题,这里做一个总结,处理常见的问题原创 2016-03-07 20:29:16 · 1271 阅读 · 0 评论 -
macOS开发中网络连接或数据库连接收到错误“Operation not permitted”的解决方法
在给出解决方案之前,我一定要好好吐槽吐槽,网上对于原生态的macOS开发的资料实在实在是太少了,关于这方面的问题在网上怎么搜都搜不出来,唯一的参考资料就是苹果开发者官网,但是对于我们大多数英语不是很好的开发者来说,阅读起来难度太大,而且,针对一些配置之类很细节的问题,在上面又没办法定位到,因为它只给出的是每个模块如何使用,却没有给出在什么样的场景下遇到什么样的问题应该如何解决。 ...原创 2018-04-25 13:25:31 · 3557 阅读 · 4 评论 -
Swift和C/Objective-C混编超详解
文章可能写得有点晚了,Swift语言已经诞生很久的时间了,现在它已经挤掉了OC很大的市场了,但是,总是存在很多老项目,或者是第三方库还没有完全翻译成Swift,因此,混编还是需要的。虽然现在详解可能有点晚,不过还是希望能写一篇关于混编的详细讲解,方便那些遇到困惑的童鞋学习和查阅。 无论是在OC工程里插入Swift,还是在Swift工程里插入OC,其实都没什么区别,因为Swift编...原创 2018-11-18 01:37:11 · 2217 阅读 · 0 评论 -
谁说C语言不能面向对象(之一,前言)
看到题目,我相信一定有很多人觉得,嗯,我确确实实是个逗比。各种权威资料上写得非常清楚,C语言是面向过程的语言,C++,Java,OC,Python,JS等这些才是面向对象的语言。这个逗比,竟然觉得C可以面向对象,看来他真的是个逗比。 所以我在此先声明一下我起这个标题,以及,写这个系列文章的初衷。我并不是挑战权威,说C是面向对象的语言。确实,C的确是面向过程的语言,其中并没有包括任...原创 2019-03-01 22:03:40 · 2313 阅读 · 3 评论 -
逗比老师带你搞定C语言指针
哈喽!各位同学们大家好哇!逗比老师又回来了!好久都没有见到大家了真是想死我了! 最近呢,我有一个亲戚,还在读大学,正在学C语言,然后他在我的博客上看到了我之前写过的C教程,结果没有几篇就戛然而止了,于是就攒了很多问题来问我。这里给大家抱歉哈,真的不好意思,逗比老师实在是太忙了,顾不上给大家更新详细的C教程,这个后面慢慢来。不过有些重要的知识点还是可以单独拉出来给大家重点攻克一下的...原创 2019-02-26 22:17:26 · 744 阅读 · 0 评论 -
关于OC中的Block,Swift中的闭包,C++11中的lambda表达式等匿名函数详解
Hello,大家好啊!逗比老师又来给大家逗比啦!今天咱们逗比的内容,就来围绕一个比较棘手的问题——匿名函数。我有一个朋友在学习做iOS开发,他最近就在被这个Block缠绕弥漫,感觉云里雾里,所以希望我来详细讲解一下相关的内容。相信不止他一个,遇到此类问题的人一定不占少数,所以,今天逗比老师就来给大家分享一下这个部分我个人的详细见解。我们先把视野拉回到C语言中。在C语言中定义一个函数,相信是一件...原创 2016-03-28 13:25:59 · 2285 阅读 · 0 评论