c语言中struct和c++中class实例对比
生活随笔
收集整理的這篇文章主要介紹了
c语言中struct和c++中class实例对比
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
實現(xiàn)游戲中簡單的打怪升級的功能
c語言中的struct
#include <stdio.h>typedef void(*Train)(struct player*, int);
typedef void(*Pk)(struct player*, struct player*);struct player
{int level; //等級int hp; //hp值Train f_train; //函數(shù)指針(練級)Pk f_pk; //函數(shù)指針(PK)
};void train_fun(struct player *p1, int nums)
{int killnums = p1->hp > nums ? nums: p1->hp;p1->level += killnums;p1->hp -= killnums;printf("練級:長了%d級", killnums);printf("當前:level=%d, hp=%d\n", p1->level, p1->hp);
}void pk_fun(struct player *p1, struct player *p2)
{int power1 = p1->level * 100 + p1->hp;int power2 = p2->level * 100 + p2->hp;if (power1 >= power2){printf("player1 win\n");}else{printf("player2 win\n");}}int main()
{struct player p1 ={.level = 1, .hp = 100, .f_train = train_fun, .f_pk = pk_fun};struct player p2 ={.level = 2, .hp = 50, .f_train = train_fun, .f_pk = pk_fun};p1.f_train(&p1, 6);p2.f_train(&p2, 10);p1.f_pk(&p1, &p2);return 0;
}
c++中的 class
#include <iostream>
using namespace std;class player
{
public:player(int level=0, int hp=0):level(level), hp(hp){}void train(int nums){int killnums = hp > nums ? nums : hp;level += killnums;hp -= killnums;cout << "練級:長了" << killnums << " 級。";cout << "當前:level=" << level << ",hp=" << hp << endl;}void pk(player &another){int power1 = level * 100 + hp;int power2 = another.level * 100 + another.hp;if (power1 >= power2){cout << "You win" << endl;}else{cout << "You loss" << endl;}}private:int level;int hp;
};int main()
{player p1(1, 100);player p2(2, 50);p1.train(6);p2.train(10);p1.pk(p2);return 0;
}
總結(jié)
以上是生活随笔為你收集整理的c语言中struct和c++中class实例对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c/c++中的函数指针和指针函数
- 下一篇: c语言和c++字符串操作对比