再分析 返回值加引用&,const

本文主要分析,返回&,和返回值加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 = 100};
    T A[size];
public:
        T& operator [](int index){//如果返回的没有引用,该操作符就不能作为左值了!!如果加了const也不能作为左值了
//返回引用,表示返回对象本身,而不是对象的值。
require(index>=0 && index<size,"index out of range"); return A[index]; } }; void main() { Array<int> ia; Array<float> fa; for(int i=0;i<20;i++){ ia[i]=i*i; fa[i]=i*1.414; } for(int j=0;j<20;j++) { cout<<ia[j]<<" "; cout<<fa[j]<<" "; } }


 

 

 

posted @ 2013-11-06 11:30  joey周琦  阅读(631)  评论(0编辑  收藏  举报