zoukankan      html  css  js  c++  java
  • 再分析 返回值加引用&,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]<<" "; } }


     

  • 相关阅读:
    P2048 [NOI2010]超级钢琴
    [LOJ#6468.] 魔法
    [牛客小白月赛18] Forsaken的数列
    [JSOI2011]柠檬
    [TJOI2015]组合数学
    【单调队列优化】[CF372C] Watching Fireworks is Fun
    【线段树】[Luogu P4198]楼房修建
    Python资源
    人生的几个阶段
    两种解读,生活的意义和方法
  • 原文地址:https://www.cnblogs.com/Dzhouqi/p/3410140.html
Copyright © 2011-2022 走看看