条款1:仔细区别pointers和references

单细胞marker基因表达密度图-(还有一个包装函数) 我们借助Nebulosa,将上面的过程包装为一个函数,还是那句话,受累麻烦的事我们来解决,您轻松即可,先看看函数参数:需要注意的是,如果你只想框选某一类celltype,理想模式是这群celltype是单独聚类的,没有散落在其他类群,否则将会全部框选,效果不好,建议使用AI/PS添加。需要注意,这里我算是投机取巧了,用了一个和这个作图毫无关系的包ggnetwork,主要的目的是用他的theme_blank()主题,一次性将所有清空,当然也可以自己慢慢写,不过有现成的,为啥不用呢?这质感不就上去了嘛。 阅读详情

**
印象笔记:
本文描述pointers和references的差异,并告诉你它们的适当使用时机。
**

首先必须认知一点,没有所谓的null reference,一个reference必须总代表某个对象。换个角度说,如果这个变量总是必须代表一个对象,也就是如果你的设计并不允许这个变量为null,那么你应该使用reference。

先看一种情况:

int *pc=0;  //将pointer设定为null
int& rc=*pc;    //让refere代表nullpointer的解引值
cout<<rc<<endl;

这段代码将使程序产生的结果不可预期(C++对此没有定义),所以我们将永远不再考虑“reference成为null”的可能性。

由于reference一定得代表某个对象,C++因此要求references必须有初值:

string& rs; //错误!references必须被初始化

但是pointers就没有这样的限制:

string *ps; //未初始化的指针,有效,但风险高

“没有所谓的null reference“意味使用references可能会比使用pointers更富效率。这是因为使用reference之前不需要测试其有效性:

void printDouble(const double& rd)
{
    cout<<rd;//不需要测试rd,它一定代表某个double
}

如果使用pointers,通常就得测试它是否为null

void printDouble(const double *pd)
{
    if(pd){ //检查是否为null pointer
        cout<<rd;//不需要测试rd,它一定代表某个double
    }
}

Pointers和references之间的另一个重要差异就是,pointers可以被重新赋值,指向另一个对象,reference却总是指向(代表)它最初获得的那个对象:

string s1("Nancy");
string s2("Clancy");

string& rs=s1;  //rs代表s1 
string *ps= &s1;    //ps指向s1 
cout<<rs<<endl; //输出Nancy 
cout<<*ps<<endl;    //输出Nancy

rs=s2;  //rs仍然代表s1,但是s1的值现在变成了"Clancy" 
cout<<s1<<endl; //输出Clancy 
ps=&s2; //ps现在指向s2,s1没有变化 
cout<<s1<<endl; //输出Clancy 
cout<<*ps<<endl;    //输出Clancy 

一般而言,当考虑“不指向任何对象”的可能性或是考虑“在不同时间指向不同对象”的能力时,应该采用pointer。而当你确定“总是会代表某个对象”,而且“一旦代表了该对象就不能够再改变”,那么应该选用reference。

最后,书中下了一个结论:

当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是当你实现一个操作符而其语法需求无法由pointer达成,你就应该选择reference。任何其他时候,请采用pointers。

Flatten 层的深度理解与运用 阅读详情

相关推荐

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3329

仔细区别 pointers 和 references

仔细区别 pointers 和 references 参考《More Effective C++》 没有所谓的 null references 一个引用必须总代表某个对象。所以如果有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能他不指向(代表)任何对象,那么你应该使用 pointers,因为你可以将 pointers 设为 null。换句话说,如果一个变量总是代表一个对象,也就是不...

Gerald的博客 368

从仿真到真机:如何将XTDrone的VINS-Fusion+RTABMap建图方案部署到真实无人机上?

本文详细介绍了如何将XTDrone的VINS-Fusion+RTABMap建图方案从仿真环境迁移到真实无人机上。内容涵盖硬件选型、传感器配置、VINS-Fusion调优、RTABMap性能优化以及系统集成等关键步骤,特别针对三维稠密重建在真实环境中的挑战提供了实用解决方案。

weixin_29056781的博客 242

【More Effective C++ 条款1】仔细区别pointers和references

1)操作符的差别 指针使用“*”和“->”操作符,而引用使用“.”操作符2)初始化的差别 有空指针,但是没有空引用,和const对象一样,引用一旦定义就必须和对象绑定(当然char* pc=0;char& rc=*pc;也合法但无意义)由此造成的影响: 2.1)对于指针的向下转型,如果失败则返回空指针,但由于没有空引用的说法,所以对于引用的向下转型如果失败则会抛异常...

Y先森0.0 246

攻防世界 misc题GFSJ1129-【您看我还有机会吗?】

我们发现了隐藏内容,一开始我以为那个英文就是flag,提交后发现不对,然后我想只有一张图片然后图片上的隐写内容又不是flag,那必定还有什么文件被隐藏了,于是我们打开VMware并启动Ubuntu,使用binwalk分析一下有没有隐藏文件,我们要在Terminal中分析,如下。我们发现里面有一个flag.txt文件,我们尝试提取里面内容,但发现又要密码,我们想起了之前图片上的隐藏内容,我们将那段英文输入(包括空格和符号,在VMware中输入密码不会有显示,你看到的就像没输入一样),然后我们看到如下。

大数据专业,关注 AI 安全与数学建模。记录 Web 安全、对抗攻击、隐私保护等安全实践,以及从经典模型到智能方法的建模思考。用数学思维理解 AI,用 AI 方法反哺安全与建模。 1095

NVIDIA vGPU三种授权方式(个人玩家版)

NVIDIA vGPU三种方式搭建授权服务器(个人玩家版)

wstc2689784536的博客 8436

pointers and references

n the previous lesson on pointers and references to the base class of derived objects, we took a look at a number of examples where using pointers or references to a base class had the potential to

u012402926的专栏 485

2022李宏毅作业hw1—新冠阳性人员数量预测。

从非常基础的内容开始,主要是我的水平也很基础。

YI_SHU_JIA的博客 1万+

区别pointers和references

C++中提供两种间接参考对象:pointers和references。pointers使用“*”和“->”操作符,references则使用“ . ”。 但是什么时候使用哪种方式?通过学习《More Effective C++》的条款1学习总结了以下情况: (1)一个references必须总代表某个对象,不可能存在null references。所以当你使用一个变量,其目的是用来指向代表另外

cscmaker的专栏 1467

【SpringBoot 4.x 第29节】Spring Security 7 入门:先理解认证和授权!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。本专栏面向 有一定 Java 基础,但尚未系统学习 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,带你从第一个 Hello API 开始,逐步完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 553

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了无线充电系统面临的核心挑战,提出LCC补偿网络解决方案,阐述了其恒流输出和输入阻抗解耦原理。通过Simulink分步演示了系统建模过程,包括松耦合变压器、LCC+LC补偿网络、功率变换级搭建以及频率跟踪控制实现。仿真结果表明,LCC补偿系统在气隙变化和负载跳变下能保持输出电压稳定(波动±3%),效率达89%。文章还总结了工程实现要点,并探讨了动态充电、多负载系统等扩展应用。该教程为开发高效智能的无线充电系统提供了实用指导

amy_mhd的博客 63

仔细区分指针(pointers)和引用(references)

仔细区分指针(pointers)和引用(references) 本文指针和引用使用Pointers和References。 1、references不能不代表任何对象: 首先,没有所谓的null references,一个reference必须总代表某个对象,所以如果你有一个变量,其目的是用来指向另一个对象,但是也有可能他不指向(代表)任何对象,那么应该使用pointer。因为pointer...

qq_34029983的博客 625

如何用libwebsocket库在stm32F407上实现websocket客户端?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1134

MEC | 条款1 仔细区别pointers和references

因此,reference 一定代表某个对象,而且有初值。因为有初值,所以reference 不需要考虑其有效性,不用判断是否为空。

RandyOliver's House 211

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

怀旧版电脑GBC模拟器

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

条款1:仔细区别Pointers和References

指针和引用看起来很不一样,指针使用*和->操作符,引用则使用.操作符,但是它们似乎做的是类似的事情。         首先,需求确认的是,C++用没有空引用(null reference),一个引用必须总代表某个对象,所以既不能指向null,也不能声明变量时不赋初值,也不能在使用过程中改变指向(其实用引用更贴切)值。如果不能满足上述条件,可以考虑使用指针。         使用引用可能比指针更

江淮猫 848

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

More Effective C++ 条款1 仔细区别pointers和references

1. 初始化的区别:有空指针(NULL),但没有空引用,和const变量一样,引用一旦定义就必须和对象绑定。(当然char* pc=0;char& rc=*pc;也合法但无意义) 由此造成的影响: 1) dynamic_cast,对于指针的down_cast,如果失败就返回空指针,但由于没有"空引用"的说法,所以对于引用的down_cast如果失败...

ddzai7557的博客 223

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

读书笔记《More Effective C++》条款1:仔细区别pointers和references

pointers使用“*”和“->”操作符,references则使用“.” 1.没有所谓的null reference。一个reference必须总代表某个对象,pointer可以设置为null。也就是说,如果这个变量总是必须代表一个对象,不允许把这个变量设置为null,那么就要使用reference。 2.由于reference一定得代表某个对象,C++因此要求references必须有初

Do-Program的专栏 316

More effective C++:条款1.仔细区别pointers和references及条款2:最好使用C++转型操作符

More effective C++:条款1.仔细区别pointers和references及条款2:最好使用C++转型操作符

qq_43847153的博客 629

More Effective C++ 条款01:仔细区别 pointers 和 references

More_Effective_C++01

君鼎的博客 613

More Effective C++ 条款01:仔细区别pointers和references

仔细区别pointers(指针)和references(引用). 首先,必须认识一点,没有所谓的null reference。一个reference必须总代表某个对象。 所以如果你有一个变量,其目的是用来指向另一个对象,但是也有可能它不指向(代表)任何对象,那么就应该使用pointer,因为可以将pointer设置为null. 如果一个变量总是必须代表一个对象,如果设计不允许这个变量为null,那么你应该使用reference。 reference必须有初值。指针没有这样的限制。 pointers可以被重新

Stay hungry, Stay foolish 260

MoreEffectiveC++_基础议题_条款一仔细区别pointers和references

所以如果你有一个变量,其目的是用来指向另一个对象,但是也有可能它不指向任何对象,那么你应该使用pointer,因为你可以将pointer设为null。换个角度说,如果这个变量总是代表一个对象,也就是说你的涉及并不允许这个变量为null,那么你应该使用reference。Pointer 和reference的另外一个重要差异就是pointer可以被重新赋值,指向另外一个对象,reference确总是指向它最初获得的那个对象。String& rs;//正确的,rs指向s。

只会写HelloWorld的专栏 209

More Effective C++(条款一 仔细区别pointers和references )

1、没有所谓的空引用,但可以有空指针2、引用必须初始化,指针不一定要初始化int &amp;a;//错误,没有初始化 int b=1; int &amp;rb=b;//正确,rb指向b int *p;//未初始化指针,正确,却风险高3、没有所谓的空引用==》引用可能比使用指针更高效,因为使用引用前不用测试其有效性void printDouble(const double&amp; rd) { ...

Unique-You的博客 366

More Effective C++ ——基础议题

条款1: 仔细区别Pointers和References 均用于间接指向其他对象,pointer存储对象所在的地址(4个字节),reference实质上是对象的别名: 1 显式区别:pointer定义时使用符号 ‘*’ ,reference定义时使用符号 ‘&’ (&用于指针表示取某个变量的地址,将其赋值给指针变量);Pointer访问指向的对象时...

July__的博客 294

C++ 中 Pointers 与 References 的选择指南:你真的用对了吗?

当你确定变量必须指向某个对象,且永远不会改变指向时,用引用;当你需要实现特定操作符(如operator[]),且语法要求无法用指针满足时,用引用;其他情况(比如可能不指向任何对象,或需要动态改变指向),用指针。理解二者的差异,不仅能让代码更健壮,还能体现你对 C++ 底层逻辑的深刻把握。下次写代码时,不妨先问问自己:这个场景,到底该用指针还是引用?

极客BIM工作室 594

1. 基础议题 摘录

基础议题。是的,pointer、reference、cast、arrays、constructors。 条款1: 仔细区分pointers和reference 首先必须认知一点,没有所谓的null reference。一个refrence必须总代表某个对象。所以如果你有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向任何对象,那么你应该使用pointer。换个角度,如果这个变量必须代表一个对象,也就是说如果你的设计并不允许这个变量为null,那么你应该使用reference。 ch

weixin_47955824的博客 287

More Effective C++ 随笔 1 to 4 基础议题

1.仔细区别pointers与reference (1)当一个指向有可能出现为NULL指向空时,那么应该使用pointers。 reference必须要指向一个对象而决不能为NULL,也因此,reference必须要有初始值。 同时也正因为reference不含NULL的情况,因此reference会比pointers更富效率(使用前不需要测试其有效性)。 (2)当需要可变的指向,也即可能会在不同...

lxx909546478的博客 211
上一篇: 数据结构--抽象数据类型(ADT)的表示与实现
下一篇: 条款2:最好使用C++转型操作符
Nim的辙迹
博客等级 码龄10年 17粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值