《Effective C++》笔记

ZYNQ裸机双网口通信实战:手把手教你用SDK和LWIP配置PS+PL以太网(附完整源码) 本文详细介绍了在ZYNQ裸机环境下实现双网口通信的全流程,包括硬件配置、LWIP协议栈优化及TCP通信实现。通过Vivado SDK和LWIP协议栈,开发者可以高效配置PS端内置网口与PL端扩展网口,提升嵌入式网络应用的灵活性和性能。附完整源码,助力快速开发。 阅读详情

从C转向C++

条款1:尽量用const和inline而不用#define

  • 少用define定义某个常量。在调试时编译器永远不会看到被define的那个数据,影响调试效率。应将“#define PI 3.14”改为“const double PI = 3.14”,性能相差无几,在类型安全上更可靠。但是注意,若要定义一个指针型常量,需要写两个const,比如const char * const authorName = “Scott Meyers”;
  • 少用define实现类似函数的功能。一是涉及到类型安全问题,编译器不会去检查“参数”的类型,二是可能出现函数重复运行的问题。例如max(++a,b),a的值增加了两次,而max(++a,b+10)则正常。

条款2:尽量用< iostream>代替< stdio.h>

  • 对cunt,cin的流操作相对于printf、scanf不用考虑变量类型、取地址等问题(scanf并不会检查参数是不是地址)。
  • 使用< iostream>而不是< iostream.h>。前者的命名空间是std,后者的则是全局,后者容易引起命名冲突。

条款3:尽量用new和delete而不用malloc和free

  • 后者不会激活类的构造函数和析构函数
  • 后者不会自动判断变量需要的内存空间,比如为字符串分配空间的时候
  • 千万不要把前者和后者混用

条款4:尽量使用C++风格的注释(//)

  • C风格的注释(/**/)不能嵌套(然后编译器不会报错,只会跳过一大段代码)
  • 在一些C语言预处理器中,宏定义后面的“//”注释可能成为宏的一部分

内存管理

条款5:对应的new和delete要采用相同的形式

  • 删除一个数组的时候要用delete [] stringPtr;否则结果不可预测。特别是使用typedef定义了数组型变量的时候要尤其注意。
  • 所以,对数组的需求最好减少到零,尽量采用std模板。

条款6:析构函数里对指针成员调用delete

  • 为了尽量避免内存溢出,每一个在构造函数里new的指针尽量都在析构函数里用delete处理
  • 构造函数里,要为每一个指针成员指向有效的内存,或者空指针(delete一个空指针也是安全的)
  • 一种避免必须删除指针成员的办法是使用智能指针auto_ptr
Ubuntu 22.04+/WSL2 中解决 `error: externally-managed-environment` 并成功安装 PyTorch + vLLM 的完整指南 Ubuntu 22.04+/WSL2 因遵循 PEP 668 规范,系统 Python 被标记为“外部管理”,导致直接使用 pip install 安装包时报错 externally-managed-environment。解决方案是创建虚拟环境: 通过 python3 -m venv ~/vllm-env 创建隔离环境 激活环境后安装 PyTorch(CUDA 12.1)和 vLLM 避免使用 sudo pip 或 --break-system-packages,防止破坏系统依赖 关键点: 虚拟环 阅读详情

相关推荐

避坑指南:STM32CubeMX安装后,你的第一个工程为什么中文全是乱码?

本文详细解析了STM32CubeMX安装后中文乱码问题的根源及解决方案。从诊断乱码现象到分析编码冲突背景,提供了新项目UTF-8化、旧项目GBK兼容及版本降级等多种实用方案,帮助开发者彻底解决这一常见问题。

weixin_30699955的博客 474

《effective C++》阅读笔记

《effective C++》阅读笔记

subtitle_的博客 1046

45个经典Linux面试题(非常详细)零基础入门到精通,收藏这一篇就够了

(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。$ chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限。linux命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件。

小陈的博客 2071

Effective C++读书笔记

前些天看了《Effective C++》这本书,感受颇深,现将读书过程中记录的相关笔记总结如下,希望会对大家有所帮助。 1、千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用。     原因:返回一个局部对象的引用他的问题在于,局部对象仅仅是局部的,也就是说局部对象是在定义时被创建,在离开生命空间时被销毁的。所谓生命空间就是他们所在的函数体,当函数返回时,程序的控制离

Silence723的博客 653

solidworks vba二次开发配合问题

solidworks vba二次开发配合问题二次开发装配的步骤 二次开发装配的步骤 solidworks可以使用宏录制配合过程从而得到配合的vba代码,步骤如下: 1.选择两个配合的面(点、线等) 2. 建立配合 例如将两个圆柱面同心(图中高亮): 配合后 我们看一下宏录制的代码: Sub main() //激活solidworks接口 Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc //选择两个圆柱面,注意此处是根据坐标选择,不

Alejandro123的博客 3406

【CAN总线测试】——通讯相关诊断测试

本章主要介绍通讯相关诊断测试用例设计

LOVE135149的博客 1815

Effective C++笔记

Effective C++笔记

weixin_48591705的博客 734

STM32智能小车控制舵机转向

文章目录前言一、舵机简单介绍及接线方式二、cubeMX配置三、代码解析总结 前言 本文将带大家学习如何驱动舵机转向 一、舵机简单介绍及接线方式 信号线(黄线)红线(电源线)棕色(地线) 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2

m0_49476241的博客 8614

CPP & 笔记 - More Effective C++

基础议题 Item M1:指针与引用的区别 指针 存在不指向任何对象的可能 需要能够在不同的时刻指向不同的对象 引用 必须指向一个对象,并且不想改变其指向 在重载操作符,并为防止不必要的语义误解时,如: char &operator[](size_t idx); Item M2:尽量使用 C++ 风格的类型转换 static_cast<type>(expression):用于变量类型转换 const_cast<type>(expression):用于转换表达

灰黑的博客 302

从点云到舱口尺寸:船甲板舱口检测的算法实现

本文提出了一种从船甲板激光扫描点云中自动检测舱口尺寸的算法。通过数据预处理(降采样、去噪、平面分割)后,采用甲板投影轮廓法将3D点云转换为2D图像,利用双次闭运算解决扫描碎片化问题,通过轮廓树检测内轮廓识别舱口。算法最终能稳定检测出三个主要舱口的长宽尺寸、面积和位置信息,矩形度超过0.89。该方法克服了扫描稀疏和围壁结构复杂的问题,参数可调性强,适用于工程实践。关键创新点在于将舱口识别转化为图像中的"洞"检测,而非直接处理3D几何特征。

点云兔子的博客 147

Android系统开发面试指南:系统Launcher岗位解析

本文针对上海礼聪Android系统开发岗位(侧重系统Launcher、充电/电池/USB底层开发)提供面试指南。内容涵盖应用开发(启动流程优化)、系统底层(充电状态机、USBOTG)、编程能力(线程安全LRU实现)、问题排查(ANR分析)及沟通协作等核心考点。通过5类典型问题及技术深度解析,帮助候选人系统准备,重点考察Framework源码理解、系统调试能力和工程思维。建议结合PowerManagerService等模块源码和systrace工具进行实践准备,同时注重技术表达与协作能力的展现。

郑伟强dev的专栏 935

读书笔记_Effective C++_习惯C++

这是一本非常经典C++书籍,也是我在工作中发现自己C++上还有很多薄弱点的时候经常拿来充电的。这本书内容很多,讲了很多如何高效地使用C++的方法,有些地方自己也没能啃透,读过一遍后很多知识点容易忘记,这次是一条一条地进行温习,之所以会分享出来是觉得对于程序员来说,好记性不如烂笔头,自己多动手往往在真正写程序的时候能够像条件反射一样写出好的代码。慢工出细活,对待技术要有谨慎和敬畏之心。这本书推荐喜欢C

John_cdy的专栏 3194

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Effective C++ XMind读书笔记

effective C++第三版读书笔记,使用XMinder。

mavlarn的专栏 1601

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Effective C++ 笔记

原文链接

michaelysj的专栏 253

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Effective C++ 学习笔记一

无端的将所有的classes的析构函数声明为virtual,就像从未声明他们为virtual一样,都是错误的。定义一个语义约束指定一个不被改动的对象,编译器会强制实施这项措施,你可以在class外部修饰 gloabl或者namespace 作用域中的常量,或者修饰文件,函数,或者区作用域中被生命为static的对象。编译器可以暗自为class 创建默认的构造函数,copy构造函数,copy assignment操作符,以及析构函数。如果出现*两边 则表示被指物和指针两者都是常量。

乐褀的博客 1241

《Effective c++》学习笔记

《Effective c++》学习笔记第1章 让自己习惯C++01 视c++为一个语言联邦02 尽量以const、enum、inline替换#define03 尽可能使用const04 确定对象被使用前已先被初始化第2章 构造、析构、赋值运算05 了解C++默默编写并调用哪些函数06 若不想使用编译器自动生成函数,就该明确拒绝07 为多态基类声明virtual析构函数08 别让异常逃离析构函数功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列

沟沟沟的博客 1040

《Effective C++》笔记汇总_思维导图 chap1

1.让自己习惯C++ 下面是思维导图的截图,资源发在Github上了,需要的朋友自取 《Effective C++》chap1:让自己习惯C++ 一些话儿 本人水平有限,如果笔记中有错误或是遗漏的地方,还请大家体谅。 这份笔记花了小生非常多的时间与精力,如果能帮到你对C++的学习,点个赞即可! ...

qq_43596544的博客 476

Effective C++ 学习笔记一:让自己习惯cpp

一:View C++ as a federation of languages; 视C++为一个语言联邦 将c++视为由相关语言组成的联邦而非单一语言。理解其相关的次语言。 1.C 2.object-oriented C++ 3.Template C++ 4.STL c++高效编程守则视情况而变化,取决于你使用C++的哪一部分 二:Prefer consts,enums,a...

qq_33776188的博客 538

C++笔记(Effective其他)

(之前Mindjet笔记的截图) 更多: More Effective C++笔记 Effective C++笔记

Getnway 609

Effective C++读书笔记博客汇总

做过两个项目以后,第二次读才写的博客,有一些地方确实在项目中会运用到,但其他的还是有不少不太理解的,之后再做做别的项目进行第三次阅读之后再进行补充。我是第一次读到一半就没读了,觉得看不懂,读起来也比较枯燥。

m0_74795952的博客 766

几种特殊性质的类--《Effective C++》《More Effective C++》笔记

0 C++的灵活性C++语言实在是太灵活了,所以《Effective C++》提议把它看做四门语言的集合。其复杂的语法可以让程序员实现任意意图,同时由于过于复杂而导致正确表达的难度很大。本文总结实用的一些表达方式。1 对象的创建、初始化、删除方式C++对象创建方式有两种:在stack或data区上自动创建;在Heap上手动创建。当直接声明一个对象时,就采用第一种自动创建的方式,编译器为其自动开辟内

smstong的成长轨迹 1426

《Effective C++》读书笔记

effective C++读书笔记,持续更新中......

weixin_45654421的博客 261

《Effective C++》笔记汇总_思维导图 chap3

3.资源管理 下面是思维导图的截图,资源发在Github上了,需要的朋友自取 《Effective C++》chap3:资源管理 一些话儿 本人水平有限,如果笔记中有错误或是遗漏的地方,还请大家体谅。 这份笔记花了小生非常多的时间与精力,如果能帮到你对C++的学习,点个赞即可! ...

qq_43596544的博客 170

《Effective C++》学习笔记 16,17

weixin_50367479的博客 1680

《Effective C++》复习笔记

《Effective C++》复习笔记 习惯C++ 减少宏替换 使用宏其替换的宏预处理期间就进行了字符串替换,被替换的宏不会被编译器看到,宏并没有进入符号表里。 所以单纯常量使用enum或者const对象代替宏#define替换 宏替换是简单的字符串替换,如果是形似函数的宏,在进行字符串替换之后,无法进入调试的。 所以最好改用inline函数,可以调试,还有参数检查 尽量使用const 可以帮助编译器侦测出错误用法 构造/析构/赋值 对象初始化 使用对象前要进行初始化,构造函数最好使用成员初值列,

qq_38493448的博客 647

More Effective C++学习笔记

条款1 指针与引用的区别 条款2 尽量使用C++风格的类型转换 条款3 不要对数组使用多态 条款4 避免无用的缺省构造函数 条款5 谨慎定义类型转换函数 条款6 自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别 条款7 不要重载“&&”,“||”, 或“,” 条款8 理解各种不同含义的new和delete 条款9 使用析构函数防止资源泄漏 条款10 在构造函数中防止资源泄漏 条款11 禁止异常信息(exceptions)传递到析构函数外 条款12 理解“抛出一个异常”与“

weixin_42650596的博客 596
上一篇: Mactype与VirtualBox的兼容性问题
下一篇: 如何重新开启小米平板的USB计算机连接功能
Azure小诶
博客等级 码龄15年 18粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值