我正在用C ++编写一个小卡片游戏作为练习。我正在使用一种结构来代表个人卡片:
#include <string>
struct card
{
int number;
std::string suit;
};
卡片将保存在卡片组中,我将为其定义一个函数 - 比如draw_card
- 从卡片底部删除x
卡片,默认值为1 。我想我可以用两种方式实现这个:
作为结构:
#include <vector>
struct deck
{
std::vector<card> cards_left
};
void draw_card(std::vector<card>& deck, int cards_to_draw = 1) {
// This function takes a deck by reference and removes cards_to_draw from the bottom.
};
作为一个班级:
class deck
{
std::vector<card> cards_left;
public:
void draw_card(int cards_to_draw = 1);
};
void deck::draw_card(int cards_to_draw = 1)
{
// This function takes cards_left and removes cards_to_draw from the bottom.
}
我可以编写一个类似的函数(在两种情况下)来填充类和结构中的cards_left
。对于像这样的问题,为什么我更喜欢在结构上使用类?是否严格要求组织所有仅适用于特定类别的功能,还是有其他优势?
答案 0 :(得分:2)
类和结构之间的区别是属性(数据和方法)的默认保护。
例如:
class deck
{
std::vector<card> cards_left;
public:
void draw_card(int cards_to_draw = 1);
};
的作用与:
相同struct deck
{
private:
std::vector<card> cards_left;
public:
void draw_card(int cards_to_draw = 1);
};