C++ (Qt)#include <iostream>#include "Player.h"#include "Monster.h" int main( ) { Player p( "Player" ); Monster m( "monster" ); std::cout << p.name( ) << ": " << p.healthValue( ) << std::endl; std::cout << m.name( ) << ": " << m.healthValue( ) << std::endl; return 0;}
C++ (Qt)#ifndef GAMECHARACTER_H#define GAMECHARACTER_H #include <string> class GameCharacter {public: GameCharacter( std::string name ) : m_name( name ) { } int healthValue( ) const { //... // выполнить предварительные действия //... // выполнить реальную работу int retVal = doHealthValue( ); //... // выполнить завершающие действия //... return retVal; } std::string name( ) const { return m_name; } private: virtual int doHealthValue( ) const { /* производные классы могут * переопределить эту функцию */ // алгоритм по умолчанию для вычисления // жизненной силы персонажа return 1; } std::string m_name;}; #endif // GAMECHARACTER_H
C++ (Qt)#ifndef MONSTER_H#define MONSTER_H #include "GameCharacter.h" class Monster : public GameCharacter {public: Monster( std::string name ) : GameCharacter( name ) { }}; #endif // MONSTER_H
C++ (Qt)#ifndef PLAYER_H#define PLAYER_H #include "GameCharacter.h" class Player : public GameCharacter {public: Player( std::string name ) : GameCharacter( name ) { } private: int doHealthValue( ) const { return 2; }}; #endif // PLAYER_H