当前位置:主页   - 电脑 - 程序设计 - C/C++
浅谈C++类(10)--函数对象
来源:网络   作者:九天雁翎   更新时间:2011-09-07
收藏此页】    【字号    】    【打印】    【关闭

  关于操作符重载其实并没有讲完,比如前++,后++,*,[]等等但是都差不多,感觉没有什么好讲的,我个人对这个浅谈系列的定位感觉应该是一些自己的笔记和心得,并不像让它成为百科,因为以前太过于求全,浪费了太多时间,以后碰到想讲的就讲,不想讲的就不为了全而凑数了。回到主题,先看一个我没有讲过的操作符重载(),在一个家伙后面加括号,那不就是函数吗?恩,就让类可以像函数一样调用!呵呵,搞了这么久,类才有点新意。看个没有函数对象的例子先,还是我们的水果,当然为了简单,我把以前那些复杂的东西都删了,就是个简单的水果。

  例10.0:

#include <string>
#include <iostream>
using namespace std;
class Fruit               //定义一个类,名字叫Fruit
...{
    string colour;   //定义一个colour成员表示颜色
    string name;     //定义一个name成员表示名字  
    double weight;   //定义一个weight成员表示重量
public:
    Fruit(const string &cst = "green",const string &nst = "apple",const double &dw = 0.0):colour(cst),name(nst),weight(dw)//构造函数
    ...{
    }
    ~Fruit()   //析构函数不需要定义,用系统的就好了
    ...{
    }  
    bool equalName(const Fruit &orign)
    ...{
        return name == orign.name;
    }
    bool equalColour(const Fruit &origc)
    ...{
        return colour == origc.colour;
    }
    bool equalWeight(const Fruit &origw)
    ...{
        return weight == origw.weight;
    }
};
 
int main()
...{
    Fruit greenApple;
    Fruit redApple("red");
    Fruit blueApple("blue","apple",1.0);
    cout<<greenApple.equalName(redApple)<<endl;
    cout<<greenApple.equalName(blueApple)<<endl;
    cout<<redApple.equalWeight(blueApple)<<endl;
    
    return 0;
}

编缉推荐阅读以下文章

  • 浅谈C++类(9)--重载算数关系操作符
  • 浅谈C++类(8)--重载输入输出操作符
  • 浅谈C++类(7)--析构函数
  • 浅谈C++类(6)--复制构造函数
  • 浅谈C++类(5)--友元
  • 浅谈C++类(4)--隐式类类型转换
  • 浅谈C++类(3)--两个特殊成员mutable与static成员
  • 浅谈C++类(2)--一个简单的多文件具体例子
  • 浅谈C++类(1)--概念和构造函数
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明