重读Effective C++

从零到一:Abaqus与Matlab联合仿真的自动化流程构建指南 本文详细介绍了如何构建Abaqus与Matlab联合仿真的自动化流程,涵盖基础架构设计、关键接口技术实现、结果提取与处理技术以及高级参数化优化流程。通过Python脚本作为桥梁,实现数据传递和任务控制,帮助工程师提升仿真效率。特别强调了版本兼容性、异常处理和性能监控等实用技巧。 阅读详情
好久没看C++的书了,用C++需要注意非常多的陷阱,写起程序来确确实实是戴着镣铐跳舞。可是,没办法,找工作还是得靠它。前几天重读了Effective C++,还是很喜欢侯捷的语言,在这里把常用的注意事项记录下来。


1. 使用相同形式的new和delete


2. 总是让base class拥有virtual destructor(delete pBase调用哪个析构函数?)
3. 如果class内动态分配内存,请为此class声明一个copy constructor和一个assignment运算符(内存分配问题)
4. initialization list中的members初始化次序应该和其在class内的声明次序相同(class members按照声明顺序来初始化)
5. 令operation=传回"*this 的 reference"
6. 在operation=中为所有的data members设定内容(主要是base class部分,拷贝构造函数也要注意这个问题)
7. 在operation=中检查是否“自己赋值给自己”(动态内存问题)


8. 尽可能使用const
9. 尽量使用pass-by-reference 少用 pass-by-value(减少构造函数和析构函数的调用)
10. 当你必须传回object时,不要尝试传回reference(空悬指针)
11. 明智地运用inlining(复杂函数、虚拟函数、构造函数、析构函数、对内联函数取地址都会使内联失败,对老的编译器会产生冗余副本)


12. 通过public inheritance模塑出“isa”关系;通过layering技术模塑出has-a或is implemented in terms of关系;通过private 继承实现is implemented in terms of关系,并可以调用父类的protected函数。优先使用layering技术。
13. 对于public继承,纯虚函数意味着接口继承;虚函数意味着接口和默认实现继承;非虚拟函数意味着接口和实现都被继承,“不变形凌驾于变异性之上”
14. 绝对不要重新定义继承而来的非虚拟函数(非虚拟函数是静态绑定)
15. 绝对不要重新定义继承而来的虚拟函数的缺省函数值(缺省函数值为静态绑定)
16. 避免在继承体系中做向下转型动作(重新设计类的层次)


17. 清楚知道C++编译器默默为我们完成和调用哪些函数(默认构造、拷贝构造、析构、赋值操作符、取地址)
18. 使用non-local static object之前确定它已有初值(初始化次序无保证,用singleton模式解决 )


使用R包PreMSIm预测微卫星不稳定的标题:基于基因表达量的微卫星不稳定性预测 在本文中,我们将介绍如何使用R语言中的PreMSIm包来根据基因表达量进行微卫星不稳定性的预测。需要注意的是,本文仅介绍了使用PreMSIm包进行微卫星不稳定性预测的基本流程和代码示例。在实际应用中,还需要考虑数据的质量控制、模型优化以及结果的解释和验证等因素,以确保预测结果的准确性和可靠性。预测结果将返回一个包含微卫星不稳定性指数的向量,其中每个元素对应一个样本的预测结果。在有了输入数据后,我们可以使用PreMSIm包中的函数进行微卫星不稳定性的预测。函数生成一个包含所有样本的微卫星不稳定性信息的表格。 阅读详情

相关推荐

wpa_supplicant EAPOL状态机分析

wpa_supplicant EAPOL状态机分析

加油鸭 1476

重读Effective C++的几点收获

1:常量可以放在头文件里,包括常量字符串,但是定义常量字符串应当这样定义const char* const pStr = "str";const char Str[] = "str"; 2:如果内存不足,new会跑出一个bad_alloc的异常,如果设置了内存不足的处理函数,那么

337

卡方检验的隐藏逻辑:为什么正态分布的平方和如此重要?

本文深入探讨了卡方检验的核心逻辑,揭示了正态分布平方和在统计检验中的重要性。通过分析卡方分布与伽马分布的关系,以及实际应用案例,帮助读者理解卡方检验的原理、局限及高级应用场景,为数据分析提供有力工具。

3a9bq4r8t2y的博客 208

重读经典-《Effective C++》Item1:视C++为一个语言联邦

C++已经是个多重范型编程语言(multiparadigm programming language),一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、范型形式(generic)、元编程形式(metaprogramming)的语言。 如何理解这样一个语言? 将C++视为一个由相关语言组成的联邦而非单一语言,在其某个次语言中,各种守则与通例都倾向简单、直观易懂、并且容易记住。 C++的4个次语言: ○ C

学习,思考,记录,分享。 3191

PVE(Proxmox VE)添加VMware Esxi并迁移虚拟机

跨平台迁移虚拟机:从VMware虚拟化平台迁移虚拟机到PVE平台。

VEGETA的博客 7714

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值

博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1).

qq_36958801的博客 1万+

重读经典-《Effective C++》Item0:基本概念

基本概念 1. 声明 Declaration:告诉编译器某个东西的名称和类型,但略去细节。 2. 定义 Definition:提供编译器一些声明所遗漏的细节。 对对象而言,定义是编译器为此对象分配内存的地点。 对function和function template而言,定义提供了代码本体。 对class和class template而言,定义类出他们的成员。 3. 初始化 Initialization:是给予对象初值的过程。 对用户自定义类型的对象而言,初始化由构造函数执行。

学习,思考,记录,分享。 2629

ERA5数据驱动WRFV4.4实战:单层嵌套配置与关键报错排查指南

本文详细介绍了使用ERA5再分析数据驱动WRFV4.4模式进行单层嵌套模拟的完整实战流程。内容涵盖从数据精准下载、WPS前处理配置、WRF核心参数设置到高频报错的深度排查与解决方案,旨在帮助初学者在有限服务器资源下,高效完成WRF模拟并规避常见陷阱。

q5r6s7的博客 770

重读经典-《Effective C++》Item2:尽量以const,enum,inline替换#define

○ 静态常量数据成员可以在类内初始化(即类内声明的同时初始化),也可以在类外,即类的实现文件中初始化,不能在构造函数中初始化,也不能在构造函数的初始化列表中初始化; ○ 静态非常量数据成员只能在类外,即类的实现文件中初始化,也不能在构造函数中初始化,不能在构造函数的初始化列表中初始化; ○ 非静态的常量数据成员不能在类内初始化,也不能在构造函数中初始化,而只能且必须在构造函数的初始化列表中初始化; ○ 非静态的非常量数据成员不能在类内初始化,可以在构造函数中初始化,也可以在构造函数的初始化列表

学习,思考,记录,分享。 4283

VUE3如何使得大屏自适应的几种方法?

16:9。

weixin_42711805的博客 1万+

YOLOv13添加轻量化的EMA模块Faster_EMA,轻量又涨点!map50提升4.56个点,召回率提升9.66!

本文介绍了YOLOv13模型的优化移植方法,通过添加Faster_EMA模块和超参数调整,使模型性能显著提升。主要修改包括:1) 创建新的模型配置文件yolov13-Faster_EMA.yaml;2) 在tasks.py中添加新模块;3) 修改__init__.py和block.py文件,新增Partial_conv3和DropPath类。优化后模型mAP50提升4.56%,召回率提升9.66%,验证了改进方案的有效性。代码实现了局部卷积和随机深度等先进技术,为YOLO系列模型性能优化提供了新思路。

FJN110的博客 2604

重读经典-《Effective C++》Item4:确定对象被使用前已先被初始化

1. 永远在使用对象之前先将它初始化 (1) 对于无任何成员的内置类型,须手工进行初始化。 如: int x = 0; Const char* text = "A C-style string"; Double d; Std::cin >> d; //以读取input stream的方式完成初始化 (2) 对于内置类型意外的任何其他东西,初始化由构造函数函数完成。 规则1:确保每一个构造函数都将对象的每一个成员初始化。 注意:别混淆了赋值(assignment)和初始化(init

学习,思考,记录,分享。 2920

Linux Namespace隔离实战:dd/mkfs/mount/unshare构建终极沙箱

内存占用 | 512MB+ | **<10MB** | 50倍节省 || 启动时间 | 15-45秒 | **0.1-0.5秒** | 100倍加速 || 磁盘空间 | GB级 | **MB级** | 显著减少 || 系统调用性能 | 有损耗 | **原生速度** | 零损耗 |

Loving_enjoy的博客 398

重读经典-《Effective C++》Item3:尽可能使用const

1. const关键字 const可以修饰的对象分类 在class外部修饰global或者namespace(reference Item2)作用域中的常量 在class内部修饰static和non-static成员变量 在文件、函数、区块作用域(block scope)中修饰被声明为static的对象 对于指针,可以修饰指针本省、指针所指物、或者同时修饰两者 修饰函数返回值,函数参数,成员函数本身 如, char greeting[] = "Hello";

学习,思考,记录,分享。 2759

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

复习C++重读名著Effective STL - item 18 vector<bool>的缺点分析

复习C++重读名著Effective STL之第18条

Bruce 394

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Effective C++笔记

IT男的双十一就只能去买书。买了本Effective C++,决定近期和算法导论一起看。 这两天看了几个,记录下来供以后复习使用。 条款01:View C++ as   a federation of languages 条款02:Prefer consts,enums,and inline to #defines 条款03:Use const whenever possible

LinJM-机器视觉 1470

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

读《C++编程规范》

     最近身体一直不是很好,疲倦得很。(休了一个春节的假,也没有从去年年底的病态中恢复过来,后来又感冒了,55555.。。。!)不太想看逻辑性太重的书,把以前那本《C++编程规范》翻出来读,发现感觉不一样(当初肯定没有仔细读,走马观花)。书看来不能读太老太早的啊,这里提到很多被抛弃的编程规范,在曾经的某个时段还被我大量使用过,哎!    书已经被我读了一大部分,给我印象最深的应该是第0条:

凤凰翎箭 436

避免滥用宏

《Effective C++》条款二建议优先使用const、enum和inline替代#define宏定义。对于变量宏,const常量能提供更好的可维护性和调试信息;对于函数宏,inline模板函数可避免参数多次求值和不可预测行为。虽然预处理器在包含文件和编译控制上仍有必要,但在日常编程中应尽量减少#define的使用,以提高代码质量和可维护性。该条款强调编译器优于预处理器的原则,适合在复杂项目中实践。

qq_35644837的博客 423

《Effective STL》重读笔记整理

最近有闲,在工作之余重读了《effective STL》一书,并通过 twitter 记了一下笔记,今天整理收集到这里。twitter 真的非常适合记读书笔记,哈哈,以后要好好地发扬。另,我的手机还是很老的 UIQ 3.0 的索爱手机,有没有达人推荐一些上推的应用程序?谢谢。====================================#estl 第50条:熟悉与ST

赖勇浩的编程私伙局 8654

重读《设计模式》之学习笔记(三)--SINGLETON模式的疑惑

    《More Effective C++》的条款26限制某个class所能产生的对象数量中也讲解了本书的3.5节的SINGLETON模式。3.5节一开始就说明了该模式的意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。    然而,两本书在产生唯一的实例的方法上却是截然相反。本书使用类的静态成员函数,而《More Effective C++》中却用静态对象。他们唯一的相同之处就是都

寒星轩 5790

《Effective C++》结语

九月的这三周把《Effective C++》重读了一遍,尽量以自己的理解,用最简单的(其实太深入也不会写)的语言把书里面的重点都写了下来。 由于之前找实习占用了大量的时间,写的博客都比较水,这个分类是正式开始比较认真地在写了,今后还会继续记录一些知识点。 这十几篇文章都采用代码+文字 的方式来叙述,作者在书里列举了很多实际上我们开发时候不经意就能踩到的坑,并且倡导我们写出高质量、高效率的...

anmengdai0123的博客 124

Effective系列经典著作,铺就程序员殿堂之路

Effective系列图书是我们学习中难以绕开的经典。经典书籍需要不断被重读,因为每一次重读都会带来新的体会。本文带来了5本Effective系列的经典著作,让我们一同迎着大师们的智慧之光,走向卓越。 1 《Effective C++:改善程序与设计的55个具体做法(第三版)中文版(双色)》 Effective C++: 55 Specific Ways to Improve Your Programs and Designs,3/e 【美】Scott Meyers 著 侯捷 译 有人说C++程序员可以

博文视点(北京)官方博客 1044

C++书单

Bjarne Stroustrup的The Design and Evolution of C++Stanley B. Lippman的Essential C++Stanley B. Lippman的C++ PrimerPike和Kernighan的The Practice of ProgrammingBruce Eckel写的、候捷译的Thinking in C++Scott Meyers的Ef

wowo 1117
上一篇: 用VTK绘制DEM之二
下一篇: C++中的错误处理与异常
gisocean
博客等级 码龄19年 8粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值