功能和结构与类别

Functions and Structures Versus Classes

本文关键字:结构 功能      更新时间:2023-10-16

我正在努力在C 中编写小型纸牌游戏。我正在使用结构来表示单个卡:

#include <string>
struct card
{
    int number;
    std::string suit;
};

卡将在甲板上保存,为此,我将定义一个功能 - 类似于draw_card-从甲板的底部卸下x卡,默认为一个。我认为我可以通过两种方式实施:

作为结构:

#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。对于此类问题,为什么我希望使用班级而不是结构?严格来说,这是组织所有仅适用于给定类别的功能的问题,还是还有其他优势?

类和结构之间的差异是属性的默认保护(数据和方法)。

例如:

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);
};