mem_fun的使用

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include
#include
#include
#include
using namespace std;

class Shape
{
public:
 virtual void display()=0;
};

class Rect:public Shape
{
public:
 void display() { cout<<"Rect"<};


class Rect1:public Rect
{
public:
 void display() { cout<<"Rect1"<};

class base
{
public:
        explicit base(string a)
        {
        cout << a <        }
} ;

int main()
{
 vector v;
        v.push_back(new Rect());
        v.push_back(new Rect1());
        for_each(v.begin(), v.end(), mem_fun(&Shape::display));
        base b("a");

        //这里display 是虚拟的,因为这是动态的。

感觉虚函数是可以取址的
  含虚的Class中的虚函数只是被组织在一个表格中,到需要的时候
  整体与Class挂钩 !

        //mem_fun是一个成员函数的调用,传入成员函数的执政
        //原型如:
        //template
        // mem_fun_t mem_fun(R (T::*pm)());

        //template
        // struct mem_fun_t: public unary_function
        //{
        //              explict mem_fun_t(R (T::*pm)());
        //              R operator() (T *p) const;
        //};
        //
}
//---------------------------------------------------------------------------

 

 

前两天就看完了exceptional c++,不过没有完全理解,等过段时间再读过。

昨天继续看看bbs精华。还稍微翻了一下esstional c++,感觉正是不合适我,哈哈,水平高了一点点。


你可能感兴趣的:(C/C++)