cocos2d-x对Vector<Node*>排序

很简单,代码如下:

// getMillis() 的签名必须为 uint64_t getDay() const {xxx},另外 less 已经被占用!
bool funcLess(const Photo* photo0, const Photo* photo1) {
    return photo0->getDay() < photo1->getDay();
}
void sortPhotos(Vector<Photo*>& vecPhoto) {
    std::sort(std::begin(vecPhoto), std::end(vecPhoto), funcLess);
}

2015.1007.1213

今天查了一下资料,了解到了要在 getDay() 后加 const 的原因:
因为 funcLess 的参数列表中 const Photo* photo0,表示此函数不能修改 photo0 这个对象,
虽然 funcLess 中并没有修改 photo0 对象的操作,但 photo0 调用了自己的成员方法 getDay(),
谁知道 getDay() 成员方法中 photo0 有没有修改自身呢?所以才有了 getDay() 后面要加 const 一说,
加上 const 表示成员函数 getDay() 保证不会修改自身!然而这对于 int getDay() 有什么意义呢,调用者只有接收 int 返回值的份啊?
要考虑到编译器并没有那么智能,int getDay() 和 void setDay(int) 对于编译器而言都是一样的,
它没那么智能去识别如果只是返回 int 的话,外界无从修改 photo0 这个对象,更何况谁能保证 photo0 中没有 “内鬼” 呢?
对于 bool funcLess(const Photo* photo0) 和 int getDay() const 的瓜葛,总算是有着落了!

--EOF--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值