effective c++ 笔记 (1-3)

effective c++ 和 more effective c++中知识点 尽可能使用 const在 C++ 编程中,尽可能使用。 阅读详情

//

//  effective c++.cpp

//  笔记

//

//  Created by fam on 15/3/23.

//

//


//---------------------------15/03/23----------------------------


//#01   视c++为一个语言联邦

{

   /*

        1:c++如今支持的编程形式:

            1:过程形式  2:面向对象形式  3:函数形式   4:泛型形式   5:元编程形式

        2:c++的4个次语言:

        1> c: 说到底c++还是以c为基础的。

        2> object-oriented c++。也就是封装、继承、多态

        3>template c++。泛型编程,他带来了一个崭新的编程范型,也就是模版元编程

        4>STL。STL标准库。

     

    */

}



//#02   尽量以const,enum,inline替换 #define

{

   /*

        1:如果使用#define定义常量很可能找不到错误位置。此时用const来替换之,

        使用const还有个好处是,不会出现多份字符常量。

        关于const:

            1>当要使用一个指向常量字符串的常量指针是,最好使用const string

            使用 const std::string authorName("Scott Meyers");

            替换掉 const char* const authorName ="Scott Meyers";

            2>class的专属常量

                class GamePlayer

                {

                private:

                    static const int NumTurns = 5;

                    int scores[NumTurns];

                };

                这里的NumTurns只是一个声明式,如果要取他的地址必须在之后给出定义:

                const int GamePlayer::NumTurns;

        2:如果编译器不支持以上的static const来做初值设定可以改用 enum

        class GamePlayer

        {

        private:

            enum{ NumTurns = 5 };

            

            int scores[NumTurns];

        };

        关于enum:

            1> enum的行为比较像#define,enum无法取地址

            2> 纯粹的使用主义。enum是模版元编程的基础技术

        3:使用inline来替换函数宏。又安全,又可以写出模版元编程

     

        总结:对于常量,使用const enum来替换#define

            对于形式函数的宏,使用inline来替换#define

    */

    

}


//#03   尽可能使用const

{

   /*

        1:const可以减少客户操作错误而造成意外,又不至于放弃安全性和高效性

        很重要的一点关于+ - * /等运算符操作返回一个const类型是很好的选择

        const Rational operator*(const Rational& lhs, const Rational& rhs);

        可以避免一下的操作

        Rtional a,b,c;

        (a*b) = c;

        2:const成员函数

        将const实施于成员函数的目的,是为了确认该成员函数可作用于const对象身上。这类成员函数

        重要的原因:

            1>它们使class借口比较容易被理解。我们可以很容易地知道哪个函数可以改变对象内容,

            哪个不行(这也是const成员函数的作用,加了const修饰符就表示不可修改)。

            2>它们是的“操作const对象”成为可能。(当操作对象是const时优先调用const成员函数,相当于重载)

            这是编写高效代码的关键,因为改善程序效率的根本办法是pass by reference-to-const

            (也就是传入一个const修饰的引用)

        关于下面的class

        class TextBlock

        {

        public:

            const char& operator[](std::size_t position) const

            { return text[position];}

            char& operator[]((std::size_t position)

            { return text[position];}

        private:

            std::string text;

        {;

        

        const成员函数可以控制const对象operator[]操作返回的值是const属性的

        TextBlock tb("Hello");

        const TextBlock ctb("World");

        

        tb[0]='x'; //对的,tb是non_const对象,调用non_const版本的成员函数,返回值可以赋值

        ctb[0]='x'; //错,ctb时const对象 operator[]操作调用const成员函数

                    //返回const类型值所以无法完成赋值操作

        

        如果去掉const成员函数,那么const类型的对象返回的也是 可以修改的返回值。

        如果去掉non_const成员函数,那么不管是不是const类型的对象,返回的都是不能修改的 返回值.

     */

    

    

    

    

    

    

    

}




















《Effective C++》 读书笔记(详细总结55条款)上篇 下面从四个方面来说 (1) C++ 以 C 为基础,很多语句语法都没有改变,只是进行了扩展,C++ 解决问题的时候,可以理解为 C 的高效解法 (2) 面向对象,有构造函数,析构函数,继承、封装、多态、虚函数动态绑定,这是不同于C 语言的部分 (3) 泛型编程、可以理解为代码的模型,但是代码本身并不占用内存空间,只有在实例化的时候,才分配内存,所以可以提高代码复用性 阅读详情

相关推荐

数控机床进给传动设计:滚珠丝杠选型、惯量匹配与精度控制要点

数控机床的传动与进给机构是决定整机性能的核心子系统之一,其设计质量直接影响定位精度、动态响应与加工稳定性。在工程实践中,滚珠丝杠的导程与预压选择、伺服电机的惯量匹配、联轴器刚度校核以及反向间隙控制,都是进给系统设计的关键环节。理解负载惯量折算、临界转速校核与热伸长补偿等基本原理,有助于从源头规避低速爬行、高速共振和精度漂移等常见问题。无论是面向精密加工中心还是通用数控设备,掌握这些传动链的设计与调试思路,都能为后续的机电联调与精度优化提供坚实支撑。本文结合项目经验,系统梳理了进给机构设计中从需求拆解、部件选

weixin_34354945的博客 404

effective c++ 1-3学习笔记

effective c++ 学习笔记(一) 01 c++为一个语言联邦 c++可以视为一个由相关语言组成的联邦而非单一的语言。 C:c++仍然以c为基础; Object-oriented C++:这是面向对象设计在c++的实施; Template C++:c++的泛型编程; STL:STL为一个template 库; 02 尽量使用const,enum,inline 替换#define #define A 1.64 // const double A=1.64; 原因: A也许从为被编译器看见,可能

weixin_44747866的博客 190

STM32掉电保存配置参数技巧

本文介绍了使用STM32内置备份寄存器(BKP)实现掉电保存配置参数的方法。相比外接EEPROM或Flash,备份寄存器无需外设但存储容量有限,需通过VBAT引脚连接纽扣电池供电。文章详细说明了初始化步骤,包括使能PWR时钟、允许访问备份寄存器等操作,并提供了RTC初始化的代码示例。同时介绍了HAL库中读写备份寄存器的函数使用方法,包括HAL_RTCEx_BKUPWrite和HAL_RTCEx_BKUPRead函数的具体参数和调用示例。该方法适用于需要小容量数据掉电保存的应用场景。

hanhanhan233的博客 947

《Effective C++》学习笔记(1~3)

《Effective C++》学习笔记(1~3) 导读 explicit关键字修饰构造函数,禁止隐式类型转换; Widget w1 = w0; //等号语法在此起到调用拷贝构造函数的作用,而不是赋值操作符; 条款01:视C++为一个语言联邦 参数传递时,内置类型更适合值传递,用户自定义类型更适合const引用传递; C++包含四个语言层次:C、object-oriented C++、te

qqmindyourwill的博客 395

奔图M6700-M6800-M7100-M7200 系列打印机拆解教程?

奔图M6700-M6800-M7100-M7200 系列打印机拆解教程?

m0_58098052的博客 1595

信号削峰CFR基础知识介绍(一)

接下来,将得到的峰值分成若干段,在每一段中,仅保留该段内所有峰值中幅度最大的峰值。为了减少不必要的带外泄露,削峰后的信号将通过一个低通滤波器,以减少对应于削峰后信号中尖锐拐角的高频信号。首先,它识别出高于由目标PAPR确定的阈值的峰值。在峰值加窗算法中,削峰是通过在峰值区域将原始信号与一个加窗函数相乘来实现的,如下图所示。其中,w(n) 是一种常见的加窗函数,如凯撒窗、高斯窗和汉明窗等,而 p(n) 是一个加权系数。如上图所示,削峰会导致削峰后的信号出现尖锐的拐角,从而引发不必要的带外辐射(ACP增加)。

weixin_49761275的博客 1551

《effective C++》读书笔记 2011.3.1

<br />1.    关于条款4:确定对象被使用前已先被初始化<br />不同编译单元内定义之non-local static对象的初始化次序:<br />static对象,其寿命从被构造出来直到程序结束为止,这种对象包括global对象,定义于namespace作用域内的对象,在classes内,在函数内,以及在file作用域内被声明为static的对象。函数内的static对象称为local static对象(因为他们对函数而言是local),其他static对象称为non-local static对

385

《Swin-Unet: 类Unet的纯Transformer架构用于医学图像分割》学习笔记

近年来,卷积神经网络(CNN)在医学图像分析领域取得了重要进展。尤其是基于U形架构和跳跃连接的深度神经网络广泛应用于各种医学图像任务。然而,尽管CNN表现优异,但由于卷积操作的局部性,其难以很好地学习全局和长距离语义信息的交互。在本文中,我们提出了Swin-Unet,一种用于医学图像分割的类Unet纯Transformer模型。被切分为Token的图像块输入到基于Transformer的U形编码器-解码器架构中,通过跳跃连接实现局部和全局语义特征的学习。

学无止境。 5547

读书笔记-Effective C++中文版-1~3

读书笔记-Effictive C++中文版 -1~3 C++为语言联邦 C++是一个多重泛型编程语言,支持面向过程心事,面向对象行使,函数形式,泛型行使,元编程形式的语言。 C。C++以C为基础,区块(blocks),语句,预处理器,内置数据类型,数组,指针,高效编程守则C语言没有模板,异常,重载。。 Object-Oriented C++。classes, 分装,继承,多态, virtual函数...

aaron1996123456的博客 372

HDMI设计6--Video PHY Controller IP

Reference:https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/vid_phy_controller/v2_2/pg230-vid-phy-controller.pdf 1. 序 Video PHY Controller IP是为实现与视频(DisplayPort和HDMI™技术)MAC传输或接收子系统的即插即用连接而设计的。视频MAC层和PHY层的接口是标准化的,能...

Archar_Saber的博客 8341

保姆级教程:用SSH手动重建黑群晖RAID1阵列,修复‘存储空间损毁’

本文提供了一份详细的SSH手动重建黑群晖RAID1阵列的教程,帮助用户修复‘存储空间损毁’问题。通过深入解析mdadm软RAID的底层逻辑,从诊断到重建的全过程,确保用户能够掌握黑群晖存储池的修复技术。适用于技术爱好者和系统管理员。

weixin_30319153的博客 293

Effective C++ (E3 1)笔记之视C++为一个语言联邦

应该将C++视为一个由相关语言组成的语言联邦而非单一语言。其主要的次语言一共有四个: C 面向过程部分,包括区块、语句、预处理器、内置数据类型、数组、指针等。面对一些问题时,C++只不过是高级的C解法。但是注意,C没有C++的模板、异常、重载。。。 面向对象C++ 面向对象部分,包括类(构造析构)、封装、继承、多态等。是面向对象设计之古典守则在C++上最直接的实施。 Template C

brahmsjiang的专栏 230

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

【读书笔记】Effective C++—3 资源管理(之1)

Effective C++读书笔记 --By Nathan.Yu 2007-11-27-- 3 资源管理(之一) 常见的资源:文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、网络sockets。   不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。 条款13:以对象管理资源(Use objects

@塘外人 766

Android Binder的两三事--基于Android14源码

Android14-Framework-Binder

保持专注,保持热爱 1140

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

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

读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议(1-46)

读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议

weixin_43172531的博客 537

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【more effective c++读书笔记】【第3章】异常(1)

条款9:利用Destructor避免泄漏资源 1、异常无法被忽略:如果一个函数利用“设定状态变量”的方式或是利用“返回错误码”的方式发出一个异常信号,无法保证此函数的调用者会检查那个变量或检验那个错误码。于是程序的执行可能会一直继续下去,远离错误发生地点。但是如果函数以抛出expcetions的方式发出异常信号,而该exception未被捕捉,程序的执行便会立刻中止。 2、例子:

ruan875417的专栏 383

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

《Effective C++》第3章 资源管理(1)-读书笔记

章节回顾: 《Effective C++》第1章 让自己习惯C++-读书笔记 《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记 《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记 《Effective C++》第3章 资源管理(1)-读书笔记 《Effective C++》第3章 资源管理(2)-读书笔记 《Effective C++》...

weixin_33918114的博客 77

More Effective C++学习笔记-条款1|2|3|4

指针和引用的区别主要包括: 任何情况下都不能使用指向空值的引用,这也就意味着使用引用的代码效率会比使用指针高,因为在使用之前不需要测试合法性。 引用总是指向初始化时被指定的对象,而指针可以重新赋值。 当重载某个运算符的时候,应该使用引用,比如operator[]。 vector<int> vec(10); //建立大小为10的向量 vec[5] = 10; //使用引用的方式 *vec[5]

柠檬柠檬C的博客 387

《Effective C++》学习笔记——条款35

条款 35:考虑virtual函数以外的其他选择

继续激情,继续奋斗。 1362

More Effective C++35个改善编程与设计的有效方法笔记

Scott Meyers大师Effective三部曲:Effective C++、More Effective C++、Effective STL,这三本书出版已很多年,后来又出版了Effective Modern C++。 Effective C++的笔记见:https://blog.youkuaiyun.com/fengbingchun/article/details/102761542 Effect...

网络资源是无限的 1万+

Effective C++ 学习笔记

C++程序员分为两种,一种是读过Effective C++的,一种是没读过。这本《Effective C++》 能够协助成为高效的C++开发者。简直是C++开发者的分水岭。 必须细读多遍。 本人小硕菜鸡一枚,非科班,准备今年7月从事C++开发者,修炼内功,一天学习一个effective C++条款。欢迎大佬指导讨论。 fighting!

Ref.Ptr.的博客 3869

《effective C++》阅读笔记

《effective C++》阅读笔记

subtitle_的博客 1046
上一篇: stl源码剖析 详细学习笔记 set map
下一篇: stl源码剖析 详细学习笔记 hashtable
boydfd
博客等级 码龄16年 101粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值