虚构造函数

#pragma once

class  CAnimal
{
public :
    
~ CAnimal( void );
    
virtual  CAnimal *  Create()  const   =   0 ;
    
virtual   void  SayHello( void );
};

#include 
" StdAfx.h "
#include 
" .\animal.h "


CAnimal::
~ CAnimal( void )
{
}

void  CAnimal::SayHello( void )
{
    std::cout 
<<   " hello CAnimal "   <<  std::endl;
}
/
#pragma once
#include 
" animal.h "

class  CCat :
    
public  CAnimal
{
public :
    CCat
*  Create()  const ;
    
~ CCat( void );
    
virtual   void  SayHello( void );
};

#include 
" StdAfx.h "
#include 
" .\cat.h "

CCat 
*  CCat::Create()  const
{
    
return   new  CCat();
}

CCat::
~ CCat( void )
{
}

void  CCat::SayHello( void )
{
    std::cout 
<<   " Hello CCat "   <<  std::endl;
}
// //

 

#pragma once
#include 
" animal.h "

class  CDog :
    
public  CAnimal
{
public :
    
~ CDog( void );

    CDog
*  Create()  const ;

    
virtual   void  SayHello( void );
};

#include 
" StdAfx.h "
#include 
" .\dog.h "

CDog::
~ CDog( void )
{
}

CDog
*  CDog::Create()  const
{
    
return   new  CDog();
}

void  CDog::SayHello( void )
{
    std::cout 
<<   " Hello CDog "   <<  std::endl;
}
/ //

 

 

#include  " stdafx.h "

int  _tmain( int  argc, _TCHAR *  argv[])
{
    std::vector
< CAnimal *>  Vector_Animal;
    Vector_Animal.push_back(
new  CDog());
    Vector_Animal.push_back(
new  CCat());
    
    for_each(Vector_Animal.begin(), Vector_Animal.end(), std::mem_fun(
& CAnimal::SayHello));

    
return   0 ;
}

 

#pragma once


#include 
< iostream >
#include 
< tchar.h >

//  TODO: 在此处引用程序要求的附加头文件
#include  < string >
#include 
< vector >
#include 
< algorithm >
#include 
< functional >

#include 
" Animal.h "
#include 
" Dog.h "
#include 
" Cat.h "

 

 

转载于:https://www.cnblogs.com/Dtor/archive/2006/03/25/358511.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值