本文主要分析,返回&,和返回值加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{
    };
    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;

    ;i<;i++){
        ia[i]=i*i;
        fa[i]=i*1.414;
    }

    ;j<;j++)
    {
        cout<<ia[j]<<"  ";
        cout<<fa[j]<<"  ";

    }
}

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

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

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

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

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

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

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

  4. c#调用c++开发的dll const char* 返回值接收问题

    原文:c#调用c++开发的dll const char* 返回值接收问题 用c#调用视频接口相关的dll,dll使用c++开发. c++接口定义如下: PLATFORM const char* Pla ...

  5. [改善Java代码]不要在finally块中处理返回值

    在finally代码块中处理返回值,这是在面试题中经常出现的题目.但是在项目中绝对不能再finally代码块中出现return语句,这是因为这种处理方式非常容易产生"误解",会严重 ...

  6. C++常量的引用 const

    如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作.对C++常量引用可以用其它任何引用来初始化:但不能改变. 关于引用的初始化 ...

  7. 使用ASP.Net WebAPI构建REST服务(三)——返回值

    Asp.Net WebAPI服务函数的返回值主要可以分为void.普通对象.HttpResponseMessag.IHttpActionResult e四种,本文这里简单的介绍一下它们的区别. 一.返 ...

  8. C++函数返回值(02)

    对象作为返回值 编译器会将函数栈中的返回值数据拷贝到返回栈中 指针作为返回值 函数的返回值可以是存储某种类型数据的内存地址,称这种函数为指针函数.它们的一般定义形式如下:  类型标识符 *函数名(参数 ...

  9. 常量函数、常量引用参数、常量引用返回值[C++]

    1. 关于常量引用正像在C语言中使用指针一样,C++中通常使用引用 有一个函数... foo()并且这个函数返回一个引用...... & foo()...., 一个指向位图(Bitmap)的引 ...

随机推荐

  1. TJpgDec—轻量级JPEG解码器

    TJpgDec-轻量级JPEG解码器 本文由乌合之众lym瞎编,欢迎转载blog.cnblogs.net/oloroso 下文中解码一词皆由decompression/decompress翻译而来. ...

  2. 二分图&amp;网络流&amp;最小割等问题的总结

    二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066, ...

  3. 架构验证过程发现非数据类型错误 validation found non-data type errors

    问题: infopath报一下错误 validation found non-data type errors 架构验证过程发现非数据类型错误 原因: 重复表字段在后台代码里要一一对应,否则报错. 错 ...

  4. 遇到 Line 21: StartTag: invalid element name ios

    打开这个的storyboard 文本编辑打开修改里面有冲突的部分

  5. Android实现文章+评论(MVP,RxJava,Dagger2,ButterKnife)

    简介 这个项目主要有两个功能,一个加载网页/文章,另一个用来显示评论.并应用了MVP模式,Dagger2.RxJava.ButterKnife等开源框架.效果图如下: 结构 首先来看一下布局文件: & ...

  6. 解决 IE 6/7 中console对象兼容性问题

    话不多说,直接上代码 (function (){ //创建空console对象,避免JS报错 if(!window.console) window.console = {}; var console ...

  7. Post方式的Http流请求调用

    HttpRequest公共类: public static class HttpRequestAction { /// <summary> /// 发送http请求并返回响应 /// &l ...

  8. Android学习笔记——Button

    该工程的功能是实现在activity中显示一个TextView和一个Button 以下代码是MainActivity中的代码 package com.example.button; import an ...

  9. js反序列化时间

    var time = "/Date(1279270720000+0800)/"; var tme1 = ChangeDateFormat(time); alert(tme1); J ...

  10. IOS之UIImageView--小实例项目--带音效的拳皇动画

    内容大纲: 1.初步工作 2.开始敲代码 3.注意 4.可能遇到的错误 5.设置音频速率在代码顺序上的注意点 带音效的拳皇动画实例项目 初步工作 1.新建一Objective-C工程之后,将需要的拳皇 ...