c++中的多态用法总结

1 virtualvirtual

beanBaseBeanUserBeanUserBeanBaseBeanBaseBeanid (int) create_timestd:: stringUserBeannamestd: stringBaseModelUserModelUserModelBaseModelBaseModelvirtual int addRecord (BaseBean *);

int BaseModel:: addRecord (BaseBean *数据)

{

,,,,,,std:: cout & lt; & lt;“base"& lt; & lt;std:: endl;

,,,,,,返回0;

}

UserModelint addRecord (BaseBean *);

int UserModel:: addRecord (BaseBean *数据)

{

,,,std:: cout & lt; & lt;“user"& lt; & lt;std:: endl;

,,,返回0;

}

mainaddRecord

,,,BaseModel基地;

,,,UserModel用户;

,,,BaseModel * basePtrOfBase=新BaseModel;

,,,BaseModel * basePtrOfUser=新UserModel;

,,,BaseModel, baseRefOfBase=基础;

,,,BaseModel, baseRefOfUser=用户;

,,,BaseModel baseOfUser=用户;

,,,出发出发;

,,,userBean.setId (1),

,,,userBean.setName(“第一user");

,,,std:: cout & lt; & lt;“基地:“

,,,base.addRecord(及出发);

,,,std:: cout & lt; & lt;“用户:“

,,,user.addRecord(及出发);

,,,std:: cout & lt; & lt;“basePtrOfBase:“

,,,basePtrOfBase→addRecord(及出发);

,,,std:: cout & lt; & lt;“basePtrOfUser:“

,,,basePtrOfUser→addRecord(及出发);

,,,std:: cout & lt; & lt;“baseRefOfBase:“

,,,baseRefOfBase.addRecord(及出发);

,,,std:: cout & lt; & lt;“baseRefOfUser:“

,,,baseRefOfUser.addRecord(及出发);

,,,std:: cout & lt; & lt;“baseOfUser:“

baseOfUser.addRecord(及出发);

 C + +中的多态用法总结”> <img src=

BaseModeladdRecordvirtual

 C + +中的多态用法总结

virtualvirtual <强> <强>

,

2 BaseModelUserModelBaseModel

,,,int addRecord (BaseBean);

,,,虚拟int addRecordPrc (BaseBean)=0;

虚拟int getList (std:: list* rtnList)=0;

addRecord

int BaseModel:: addRecord (BaseBean数据)

{

,,,data.setCreateTime (“2019 - 02 - 16“);

,,,返回这个→addRecordPrc(数据);

}

UserModeladdRecordPrcgetList

int UserModel:: addRecordPrc (BaseBean数据)

{

,,,出发*用户=static_cast<出发*祝辞(和数据),

, std:: cout & lt; & lt;用户→getId () & lt; & lt;std:: endl;

std:: cout & lt; & lt;.c_str用户→getCreateTime () () & lt; & lt;std:: endl;

返回0;

}

,

int UserModel:: getList (std:: list* rtnList)

{

,,,出发user1;

,,,user1.setId (1),

,,,user1.setName (“user1");

,,,user1.setCreateTime(“2019 - 02年- 15 -“);

,,,rtnList→push_back方法(user1);

,,,出发user2;

,,,user2.setId (2);

,,,user2.setName (“user2");

,,,user2.setCreateTime (“2019 - 02 - 16“);

,,,rtnList→push_back方法(user2);

返回0;

}

UserModeladdRecord

UserModel UserModel;

,,,出发出发;

,,,userBean.setId (1),

,,,userBean.setName(“第一user");

userModel.addRecord(出发);

 C + +中的多态用法总结

std:: cout & lt; & lt;.c_str用户→getName () () & lt; & lt;std:: endl;

用户名

addRecordBaseBean *, addRecordPrcaddRecordBaseBeanaddRecordPrcBaseBean * addRecordaddRecordPrcBaseBean *

 C + +中的多态用法总结

BaseBeanBaseBean

addRecordBaseBeanaddRecorddataidcreate_timeuserBeandataidcreate_timedatanamedatanameaddRecordPrcaddRecordPrcnamenulladdRecordBaseBean * addRecorddataid namecreate_timedataaddRecordnameaddRecordPrc getList

,,,std:: listnull

c++中的多态用法总结