Effective C++ 学习笔记(六)

两个成员函数如果只是常量性不同,可以被重载,这实在是一个重要的C++特性。

class TextBlock{

    public:

        const char&  operator[]  (std::size_t position ) const

        {return text[position];}

         char &  operator[]  (std::size_t position)

  {return text[position];}

   private:

       std:string text;

};


TextBlock的operator[]s可被这么使用:

   TextBlock  tb("Hello");

   std::cout<<tb[0];   //调用non-const TextBlock::operators


    const TextBlock ctb["World"];

    std::cout<<ctb[0];  //调用const TextBlock::operator[]


  例如:

  void print(const TextBlock &  ctb)

 {

     std::cout<<ctb[0];

}


std::cout<<tb[0]; 

tb[0]='x';             //正确,写一个non-const TextBlock.

std::cout<<ctb[0];

ctb[0]='x';                //错误  写一个const TextBlock.


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值