教C++的时候的一些notes (2)

(1)用stringstream的时候, 如果你想重复用相同的变量, 交替的使用<<和>>, 那么要记住
stringstream ss;
....
ss.clear()  //to clear flags if reusing


(2)
{

public:
    int getInch();
    bool equals(const Length& len);

}

bool Length::equals(const Length& len)
{
   int inch=    len.getInch();             //what is wrong?
   ....
   ....
}
上面的程序会出现一个编译错误,为什么?
error: passing `const Length' as `this' argument of `int Length::getInch()' discards qualifiers   ???
因为你在使用参数 const Length &len的时候, 你发誓你不会改变len, 但是编译器并不信任你, 因为
你没有在 equals那个函数那里做同样的发誓。
  • Solution1:
    change int getInch() to
    int getInch() const

  • Solution2: (not recommended)
    change bool Length::equals(const& Length len)
    to bool Length::equals(Length len)

  • Solution3:(not recommended)
    bool Length::equals(const Length& len)
    {
       int inch=    len.inch;  //reference member directly           
      ....
      ....
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值