//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;
class Shape
{
public:
virtual void display()=0;
};
class Rect:public Shape
{
public:
void display() { cout<<"Rect"<<endl; }
};
class Rect1:public Rect
{
public:
void display() { cout<<"Rect1"<<endl; }
};
class base
{
public:
explicit base(string a)
{
cout << a <<endl;
}
} ;
int main()
{
vector<Shape*> 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 <class R class T>
// mem_fun_t<R,T> mem_fun(R (T::*pm)());
//template<class R, class T>
// struct mem_fun_t: public unary_function<T*, R>
//{
// explict mem_fun_t(R (T::*pm)());
// R operator() (T *p) const;
//};
//
}
//---------------------------------------------------------------------------
前两天就看完了exceptional c++,不过没有完全理解,等过段时间再读过。
昨天继续看看bbs精华。还稍微翻了一下esstional c++,感觉正是不合适我,哈哈,水平高了一点点。