本文主要分析,返回&,和返回值加const的作用。

  1. 返回&

定义一个数组模板:

template<class T>
class Array{
 enum{size = 100};
 T A[size];
public:
  T& operator [](int index){//如果返回的没有引用,该操作符就不能作为左值了!!
  //返回引用,表示返回对象本身,而不是对象的值。
  require(index>=0 && index<size,"index out of range");
  return A[index];
 }
};

我们想重构操作符[],返回值为什么要加引用&呢。加了引用它就可以不仅作为右值,也可以作为左值了。也就是可以给他赋值,例如:

Array<int> ia;

ia[0]=1;//如果返回不加引用,编译器会提醒出错

2. 返回加const.

当返回值加了关键字const之后,返回的值又不能做左值了,即

Array<int> ia;

ia[0]=1;//如果加了const关键字,编译器会提醒出错

可参考c++ const 关键字  学习笔记

#include "StdAfx.h"
#include<stdio.h>
#include<malloc.h>
#include<iostream>
#include"require.h" template<class T>
class Array{
enum{size = };
T A[size];
public:
T& operator [](int index){//如果返回的没有引用,该操作符就不能作为左值了!!如果加了const也不能作为左值了
//返回引用,表示返回对象本身,而不是对象的值。

require(index>= && index<size,"index out of range");
return A[index];
}
}; void main()
{ Array<int> ia;
Array<float> fa; for(int i=;i<;i++){
ia[i]=i*i;
fa[i]=i*1.414;
} for(int j=;j<;j++)
{
cout<<ia[j]<<" ";
cout<<fa[j]<<" "; }
}

再分析 返回值加引用&,const的更多相关文章

  1. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  2. PHP获取函数返回值的引用

    通过在函数前添加&可以获取函数返回值的引用,如:function &test(){return 10;}

  3. C++函数返回值与引用

    对于函数的返回值,看似简单,但并非如此,比如: int func(int a);该函数会返回一个int型,如果进行一个调用int result=func(3);会发生什么情况? 首先,func将返回值 ...

  4. C#7.0--引用返回值和引用局部变量

    一.在C#7.0以上版本中,方法的返回值可以通过关键字ref指定为返回变量的引用(而不是值)给调用方,这称为引用返回值(Reference Return Value,或ref returns): 1. ...

  5. Mybatis源码分析--返回值ResultType和ResultMap

    这一篇博客我们来介绍一下Mybatis执行sql语句返回的结果值的到实体对象的映射机制.首先ResultType和ResultMap的使用方式是不同的. ResultType的使用方式: result ...

  6. C++中返回引用和返回值的区别

    转自https://www.cnblogs.com/JMLiu/p/7928425.html 一.主要讨论下面两个函数的区别: int& at() { return m_data_; } in ...

  7. C++函数中返回引用和返回值的区别

    一.主要讨论下面两个函数的区别: int& at() { return m_data_; } int at() { return m_data_; } 上面两个函数,第一个返回值是int的引用 ...

  8. 【转】C/C++ 引用作为函数的返回值

    转自:https://blog.csdn.net/weixin_40539125/article/details/81410008 这篇文章写的很好: 语法:类型 &函数名(形参列表){ 函数 ...

  9. const参数,const返回值与const函数

    在C++程序中,经常用const 来限制对一个对象的操作,例如,将一个变量定义为const 的: const  int  n=3; 则这个变量的值不能被修改,即不能对变量赋值. const 这个关键字 ...

随机推荐

  1. L013-oldboy-mysql-dba-lesson13

    L013-oldboy-mysql-dba-lesson13 02 18:00 来自为知笔记(Wiz)

  2. 如何查看Oracle的用户权限

    ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA. USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息 ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的 ...

  3. PHPNow升级PHP版本的方法

    在WIN上有时候需要测试一些PHP程序,又不会自行独立配置环境,那么PHPNow是非常好的选择. PHPNow自带的PHP版本为5.2.14,而最后一次更新在于2010-9-22,PHP5.2对于现在 ...

  4. Printer Queue

    Description The only printer in the computer science students' union is experiencing an extremely he ...

  5. Linux 启动直接进入 console,

    我的电脑上有两块显卡,上次fedora更新后,自动安装了nvidia的驱动, 然后悲剧发生了.再也不能够正常进行图形界面了.所以需要进入CONSOLE. 1. 当系统启动时,停止grub menu自动 ...

  6. jQuery 的 json 格式的处理问题

    在实际的使用中时常会发生一些ajax验证的诡异事件,如我在一个文件中使用json传送数据,结果出现了当数据发送到服务器端时(后端主要呈现的是对json数据对象的数据库查询操作),结果显示的是数据已经插 ...

  7. mac 下 sphinx + mysql + php 实现全文搜索(xampp)(1)

      原理: 使用sphinx 中的indexer 生成索引数据 service/web 端 利用searched 调用索引数据 步骤: 下载 sphinx: 下载地址:http://sphinxsea ...

  8. Kinetic使用注意点--ellipse

    new Ellipse(config) 参数: config:包含所有配置项的对象. { radius: "半径,可以用数字a.数组[a,b]或对象{x:a,y:b}来表示" } ...

  9. 二十、mysql mysqldump备份工具

    .备份所有数据库 mysqldump -uroot -p --all-database > c:\all.sql 备份所有数据库到c盘下的all,sql文件 .备份某个数据库 mysqldump ...

  10. UML include、generalization、extend、association

    1.别人的说法 转自:http://www.cnblogs.com/shinings/archive/2009/04/21/1440765.html 共性:都是从现有的用例中抽取出公共的那部分信息,作 ...