c++基于对象的编程风格2

本文详细解析了迭代器前缀和后缀++操作符的区别及其内部实现原理,并介绍了友元和function object的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点:
1.iterator的定义

inline Triangular_iterator& Triangular_iterator::
operator++()
{   // prefix instance
    ++_index;
    check_integrity();
    return *this; 
}

前置版本返回的对象的引用,目的是提高效率,此函数通俗讲就是直接加返回的就是+1完成的对象

inline Triangular_iterator Triangular_iterator::
operator++( int )
{   // postfix instance

Triangular_iterator tmp = *this;
++_index; 
check_integrity();   
    return tmp; 
}

++的后置版本返回的是一个临时的对象,(个人理解还请纠正)这个临时对象的生命周期应该是此后置++函数的上一层函数的执行时间,上层函数执行完这个临时对象就删除。函数中新建的一个Triangular_iterator 类型的tmp对象,此对象的目的就是保存+1之前的状态留给上层函数使用,即上层函数使用的是未加1的临时对象,实际的对象已经+1。
2.友元为了能通过编译,友元必须要先于对应class之前定义
3.function object 是某种class的实例对象,只是对其function call(应该就是小括号)进行行了重载这样这个对象就可以当做函数来使用了,这种方法比通过函数指针调用函数要高效。

class LessThan {
public:
   LessThan( int val ) : _val( val ){}
   int  comp_val() const    { return _val; }
   void comp_val( int nval ){ _val = nval; }

    bool operator()( int value ) const;

private:
   int _val;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值