指针(pointers)和引用(references)区别

指针用“*”和“->”操作符,引用用"."操作符,当然这是表面的区别。

  1. 引用必须代表一个对象,没有所谓的空引用。指针可以为NULL。即引用必须有初值,指针不然。所以在使用pointers之前,必须测试它是否为null。references不需要测试。
  2. pointers可以被重新赋值,指向另一个对象,reference总是指向(代表)它最初获得的那个对象:
    string s1("Nancy");
    string s2("Clancy");string &rs = s1;      //rs指向s1.
    string *ps = &s1;  //ps指向s1.
    rs = s2;                 //rs仍然代表s1,//但是s1的值变成了“Clancy”
    ps = &s2;             //ps现在指向s1,//s1没有变化

     

  3. 还有一些情况需要使用references。例如实现某些操作符的时候。最常见的例子是operator[]。这个操作符很特别的必须返回某种“能够被当做assignment赋值对象”的东西。
  4. 结论:当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是你实现一个操作符而其语法需求无法由pointers达成,你应该选择references。任何其他时候,请采用pointers。

转载于:https://www.cnblogs.com/yitianke/archive/2013/04/25/3043640.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网件刷breed_斐讯K2刷不死breed加padavan华硕固件教程

之前一直对斐讯的这个免费送路由活动没太多兴趣,因为为了几个廉价路由出卖个人信息我本身是有点抵触的。但是刚好最近搬家而原来的路由宝的信号无法达到我的需求而准备买一台新的无线路由。其实在买K2前确实也纠结过,因为或多或少要出卖一点个人信息&…

必读:Java Java

他们没有在Comp Sci,工程学或MIS中教appsec,但是您却学会了编程。 而且他们可能仍然没有。 因此,您将如何得知XSS过滤器规避或点击劫持攻击,或如何真正安全地存储密码。 您的公司无力为您提供昂贵的Appsec培训,而且您…

函数重载 覆盖 隐藏

重载overload 函数名相同&#xff0c;但形参的个数或形参的类型不同。 仅返回值不同&#xff0c;不能定义为重载函数。 class Base { public:void baseFun(int) { cout << "baseFun(int) in Base" << endl; }void baseFun(double) { cout << "…

linux+svn+拉取版本_在linux客户端下管理svn版本库

把linux作为客户端管理svn版本库&#xff0c;不一定是svn服务器。1.svn管理命令用法&#xff1a;[rootxiaoyu ~]# svn --helpusage: svn [opations] [args]Subversion command-line client, version 1.7.14.Type svn help for help on a specific subcommand.Type svn --versi…

对OIM Web(UI)层进行压力测试

Oracle IDM中的默认配置保留20个专用于服务前端&#xff08;UI&#xff09;请求的线程 。 从根本上讲&#xff0c;这意味着应用程序服务器具有20个线程池&#xff0c;可用于为通过Web控制台&#xff08;/ identity或/ sysadmin&#xff09;访问OIM的用户提供服务。 对于Weblog…

umi config.js整体defineConfig配置

import { defineConfig } from umi;export default defineConfig({hash: true, // 配置是否让生成的文件包含 hash 后缀&#xff0c;通常用于增量发布和避免浏览器加载缓存。history: { // 配置 history 类型和配置项type: hash // 可选 browser、hash 和 memory},base: /, // …

在 Yii框架中使用session 的笔记:

在 Yii框架中使用session 的笔记&#xff1a; 首先&#xff0c;在Yii框架中&#xff0c;你不需要像标准PHP代码那样使用session_start(),在Yii框架中&#xff0c;autoStart 属性缺省被设置为true&#xff0c;所以&#xff0c;虽然没有使用session_start(),你仍然可以使用$_SESS…

java 拼接html_程序员用1.5小时写出的Java代码,让同事瞠目结舌!直呼优秀

1.曾经不止一次在生产中见过类似这样的代码&#xff1a;这有很多变种&#xff0c;例如用 Integer.valueOf(1)、 (Integer)1 之类的&#xff0c;那些细节都不重要。重要的是&#xff1a;凭空用一个 Integer 对象作为锁对象。2.AbstractComponentBuilderTemplateFactory3.HelloWo…

本地项目antd 修改.less文件导致内存溢出

项目场景&#xff1a; antd 项目&#xff0c;修改less文件会导致内存溢出 问题描述 本地环境antd 项目&#xff0c;修改less文件会导致内存溢出&#xff1b;如下 FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory原因分析&#xff1a; 这…

序列化代理模式

在上一篇文章中 &#xff0c;我谈到了一般的序列化。 这是更加集中的内容&#xff0c;并提供了一个细节&#xff1a; 序列化代理模式 。 这是处理序列化许多问题的一种好方法&#xff0c;通常是最好的方法。 如果开发人员只想了解有关该主题的一件事&#xff0c;我会告诉他。 …

函数分组学通MongoDB——第三天 细说高级操作

改章节个人在广东喝咖啡的时候突然想到的...明天就有想写几篇关于函数分组的文章&#xff0c;所以回家到后之就奋笔疾书的写出来发布了 明天跟大家分享一下mongodb中比拟好玩的识知&#xff0c;要主括包&#xff1a;聚合&#xff0c;标游。 一&#xff1a; 聚合 见常的聚合作操…

eps如何建立立体白模_服装立体裁剪教程 结构都是“立裁”出来的 才智服装

核心提示&#xff1a;基础立裁服装立体裁剪是指用白坯布为常用替代物&#xff0c;在人台上直接塑造服装样式&#xff0c;并进行样板制作的技术。由于立体裁剪是设计师主要依靠视觉进行的直观操作的过程&#xff0c;所以它具有激发和展开新的设计思维的功能。一、基础立裁服装立…

平衡抽象原理

使代码复杂易读和理解的一件事是&#xff0c;方法内部的指令处于不同的抽象级别。 假设我们的应用程序仅允许登录用户查看其朋友的旅行。 如果用户不是朋友&#xff0c;则不会显示任何行程。 一个例子&#xff1a; public List<Trip> tripsByFriend(User user, User l…

python编写姓名年龄_python小工具 - alert弹框输出姓名年龄、求和

# 导入tkinter的所有的包里面所有的内容from tkinter import *import tkinter.messageboxasmessagebox# 从Frame派生一个Application类&#xff0c;这是所有Widget的父容器classApplication(Frame):def __init__(self,masterNone):Frame.__init__(self,master)self.pack()self.…

IIS后台网站部署不支持PUT方法 405错误

在web.config文件中添加如下代码&#xff1b;删除模块WebDAVModule <system.webServer><modules runAllManagedModulesForAllRequests"true" runManagedModulesForWebDavRequests"true"><remove name"WebDAVModule"/></mod…

IntelliJ IDEA内部设计

IntelliJ IDEA的第一版于2001年1月发布&#xff0c;当时它是第一个集成了高级代码导航和代码重构功能的Java IDE之一。 2009年&#xff0c;JetBrains开源了其社区版本 。 从那时起&#xff0c;创建了许多基于它的IDE&#xff0c;例如Google的Android Studio。 让我们使用JArc…

TDD:MS自带的单元测试 之 线程模型和执行顺序

背景 我一直在呼喊“不要靠假设编程”&#xff0c;可是我却常常这么做。我用单元测试就是一种基于假设进行编程的反面教材&#xff0c;今天就下决心弄明白它。 主要想弄明白两个问题&#xff1a; 执行的所有单元测试方法的线程模型&#xff0c;是单线程&#xff1f;是多线程&am…

JS下载图片保存在本地

const imgUrl "";// 图片链接const a document.createElement(a);// 这里是将url转成blob地址&#xff0c;fetch(imgUrl) // 跨域时会报错.then(res > res.blob()).then(blob > { // 将链接地址字符内容转变成blob地址a.href URL.createObjectURL(blob);a.…

bat文件名操作_Excel按文件名制作目录,你复制粘贴花一小时,同事只要十秒搞定...

Excel有个特殊操作&#xff0c;那就是对文件夹中上百个文件&#xff0c;用Excel按照文件名制作目录&#xff0c;我们只需要点击对于的超链接就可以快速打开对于的文件。如上图所示&#xff0c;我们的文件夹中包含有26个视频和Excel文件&#xff0c;因为文件数量过多所以我们需要…

整数返回poj1005——I Think I Need a Houseboat

这两天一直在研究整数返回之类的问题,上午正好有机会和大家讨论一下. 原题&#xff1a; Description Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the land, he learned that the state of Louisia…