51CTO首页
AI.x社区
博客
学堂
精品班
软考社区
免费课
企业培训
鸿蒙开发者社区
WOT技术大会
IT证书
公众号矩阵
移动端
短视频
免费课程
课程排行
直播课
软考学堂
全部课程
厂商认证
IT技术
24年11月软考
PMP项目管理
免费题库
在线学习
文章
资源
问答
课堂
专栏
直播
51CTO
鸿蒙开发者社区
51CTO技术栈
51CTO官微
51CTO学堂
51CTO博客
CTO训练营
鸿蒙开发者社区订阅号
51CTO软考
51CTO学堂APP
51CTO学堂企业版APP
鸿蒙开发者社区视频号
51CTO软考题库
鸿蒙开发者社区
首页
帖子
问答
资源
课堂
直播
发现
登录/注册
51CTO
中国优质的IT技术网站
51CTO博客
专业IT技术创作平台
51CTO学堂
IT职业在线教育平台
活动
短视频
专栏
极客Show
鸿蒙技术特刊
我的关注
全部帖子
操作系统
OpenHarmony
HarmonyOS
其他
应用开发
卡片开发
三方库
IDE
其他
设备开发
海思开发板
树莓派
其他
框架语言
C/C++
Java
JavaScript
ArkUI / eTS
其他
其他
物联网
云原生
数据库
操作系统
大数据
人工智能
开发语言
其他
社区版务
社区公告
社区生活
意见反馈
社区规则
社区活动
默认
发布时间
热度
原创
精华
热门标签
鸿蒙
华为
HarmonyOS
你的 c++ 团队还在禁用异常处理吗?
关于c++的异常处理,网上有很多的争议,本文会介绍c++的异常处理的使用,以及我们应该使用异常处理吗,以及使用异常处理需要注意的地方。什么是异常处理?异常处理当然指的是对异常的处理,异常是指程序在执行期间产生的问题,没有按正确设想的流程走下去,比如除以零的操作,异常处理提供了一种转移程序控制权的方式,这里涉及到三个关键字:throw:当问题出现时,程序会通过throw来抛出一个异常catch:在可能有throw想要处理...
蓝月亮
0回复
1.5w浏览
异常处理
「编程模型」C++ 代码组织
场景注:以C++11版本来展开阐述。C++11没有官方的包管理、模块功能,代码组织这块还处于手动管理阶段。代码组织会影响下面几个方面,或者说以下几个方面和代码组织有关:方便MakefileCMakeLists.txt等编译配置的编写方便手动定位要找的文件、类、函数组织方式符合直观认识解决方案目录和文件考虑到多平台的兼容性,目录和文件均使用小写字母+下划线来命名,即蛇形命名风格。目录层次和「命名空间namespace」相对应,主要靠目录...
蓝月亮
0回复
9833浏览
代码组织
「编程模型」C++ 资源引用
引子把资源的申请和释放封装到类的构造函数和析构函数中后,调用者的逻辑表达清晰了,但安全性还得程序员手工管理,主要是通过硬编码来控制作用域,尤其要仔细处理异常抛出的情况。处理一般的场景,用上面的方法就足够了,再增加抽象,就会是「杀鸡用牛刀」了。但真碰到需要「庖丁解牛」的复杂场景,就不能手工硬编码了,可以从下面2个方面来辅助理解这个转变:其一,解决场景问题仍是最主要的,由规模大导致的复杂度,不能影响...
蓝月亮
0回复
9593浏览
资源引用
想看懂 stl 代码,先搞定 type_traits 是关键
typetraits在C++中是非常有用的技巧,可以说如果不懂typetraits,那根本看不懂stl相关代码,最近对typetraits比较感兴趣,于是找到了gcc的typetraits源码通读了一遍,总结一下。typetraits称为类型萃取技术,主要用于编译期获取某一参数、某一变量、某一个类等等任何C++相关对象的类型,以及判断他们是否是某个类型,两个变量是否是同一类型,是否是标量、是否是引用、是否是指针、是左值还是右值,还可以将某个为某个类型去掉c...
蓝月亮
0回复
1.4w浏览
type_traits
学过 C++ 的你,你不得不知的这 10 条细节
前言我在阅读《EffectiveC++(第三版本)》书时做了不少笔记,从中收获了非常多,也明白为什么会书中前言的第一句话会说:对于书中的「条款」这一词,我更喜欢以「细节」替换,毕竟年轻的我们在打LOL或王者的时,总会说注意细节!细节!细节——细节也算伴随我们的青春的字眼针对书中的前两个章节,我筛选了10个细节(条款)作为了本文的内容,这些细节也相对基础且重要。针对这10细节我都用较简洁的例子来加以阐述,同时也把本...
蓝月亮
0回复
1.2w浏览
c++
管理堆内存,Rust 是怎么做的?所有权!
本篇谈下Rust语言的核心概念:所有权。这个概念是支撑Rust在编译期做内存安全检查的核心机制,也正是因为这个特性,我们认为Rust是内存安全的底层语言。虽然带GC垃圾回收器的语言虽然也是内存安全的,但由于GC的存在,已与底层无缘。栈和堆当说到语言的内存管理时,通常指的是对于堆的管理,而栈的使用都是自动的,通常都不需要程序员特别关心。栈栈,是一种数据“后进先出”的存取方式,速度非常快。《Rust权威指南》里对于栈...
蓝月亮
0回复
9332浏览
Rust
堆内存管理
「编程模型」C++ 封装资源
引子最近2个月在做一个嵌入式C++项目,Soc提供的API都是C接口的,剩下的业务功能开发就全靠自己动手实现了。一般这类项目,有直接用C开发的,也有用C++封装一下来降低复杂度。场景这类C接口中,有很大一部分是资源管理和操作的,这里的资源一般指使用前需要申请,使用后需要释放的某种有限的东西。操作系统中带有Open、Close类似接口的都属这类,如文件、网络等,当然也有自己封装的资源,以及第三方库的。使用资源,最麻烦的就...
蓝月亮
0回复
9882浏览
封装资源
左值引用、右值引用、移动语义、完美转发,你知道的不知道的都在
众所周知C++11新增了右值引用,谈右值引用我们也可以扩展一些相关概念:左值右值纯右值将亡值左值引用右值引用移动语义完美转发返回值优化我们下面会一一介绍:左值、右值概念1:左值:可以放到等号左边的东西叫左值。右值:不可以放到等号左边的东西就叫右值。概念2:左值:可以取地址并且有名字的东西就是左值。右值:不能取地址的没有名字的东西就是右值。左值一般有:函数名和变量名返回左值引用的函数调用前置自增自减表达...
蓝月亮
0回复
1.5w浏览
左值引用
右值引用
移动语义
完美转发
C++ 中如何设计一个高效 log 模块
每个开发者编程中都会记录log信息,多数人都会使用log第三方库,log库使用起来很方便,但我们也需要了解log系统的原理,这里以glog为例进行分析。开始这里不会介绍glog中是如何控制INFO、ERROR等级别的输出的,其实就是一个宏控制,主要介绍googleglog中一次LOG(INFO)过程中究竟发生了什么,以及为什么glog是线程安全的。glog中的LOG(INFO)其实是一个宏定义,如下:而COMPACTGOOGLELOGINFO也是一个宏,如下:这里就构造了一个go...
蓝月亮
0回复
1.7w浏览
c++
C++ 深入浅出工厂模式(进阶篇)
介绍前文初始篇C++深入浅出工厂模式(初始篇),主要阐述了简单工厂模式、工厂方法模式和抽象工厂模式的结构、特点和缺陷等。以上三种方式,在新增产品时,要么修改工厂类,要么需新增具体的工厂类,说明工厂类的封装性还不够好。本文进阶篇,主要是将工厂类的封装性提高,达到新增产品时,也不需要修改工厂类,不需要新增具体的工厂类。封装性高的工厂类特点是扩展性高、复用性也高。模板工厂针对工厂方法模式封装成模板工厂类...
蓝月亮
0回复
9452浏览
工厂模式
C++ 深入浅出工厂模式(初识篇)
初识工厂模式我们先看工厂模式的介绍这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。简单来说,使用了C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建。工厂模式的实现方式可分别简单工厂模式、工厂方法模式、抽...
蓝月亮
0回复
9480浏览
工厂模式
C++ 借来的资源,如何还的潇洒?
所谓的资源就是,一旦用了它,将来必须还给系统。如果不是这样,糟糕的事情就会发生。C++程序内常见的资源:动态分配内存文件描述符互斥锁图形页面中的字型和笔刷数据库连接网络sockets无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统,有借有还是个好习惯。细节01:以对象管理资源把资源放在析构函数,交给析构函数释放资源「智能指针」是个好帮手,交给它去管理指针对象。对于是由动态分配(new)于堆内存的对...
蓝月亮
0回复
1.0w浏览
C/C++
C++ 一篇搞懂继承的常见特性
继承和派生继承和派生的概念继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类)。派生类:派生类是通过对基类进行修改和扩充得到的,在派生类中,可以扩充新的成员变量和成员函数。派生类拥有基类的全部成员函数和成员变量,不论是private、protected、public。需要注意的是:在派生类的各个成员函数中,不能访问基类的pri...
wg_caddBjEB
0回复
1.9w浏览
继承
派生
C++ 线程安全的单例模式简介
什么是线程安全?在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。如何保证线程安全?给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用。让线程也拥有资源,不用去共享进程中的资源。如:使用threadlocal可以为每个线程的维护一个私有的本地变量。什么是单例模式?单例模式指在整个系统生命周期里,保证一个类只能产...
wg_caddBjEB
0回复
1.1w浏览
线程安全
单例模式
为什么我仍然建议你学C语言
现在C语言确实有点老。权威性C语言的最新版本于1988年发布。近30年来,该语言的作者尚未对其进行更新,这表明它已经过时了,现在,关于编程语言的话题,每个人都想到Rust,Go或Clojure,但很少有人想到C。但是我的同事Myles和我都不是追求潮流的人,因此我们坚持让所有学生都熟练掌握C语言。之所以要求学生学习这门古老的编程语言,我们有下面4个理由:在湾区的web和移动初创企业之外的地方,C语言依然是一个被广泛应用的编程语...
kcoufee
1回复
9836浏览
学习
暂无内容
1
22
23
24
25
26
27
28
29
30
31
精选
客服
订阅鸿蒙技术特刊,精选内容抢先看
微信扫码关注,即刻订阅