【问题标题】:Is it bad practice to make a class that has only variable attributes in C++? [closed]在 C++ 中创建一个只有可变属性的类是不好的做法吗? [关闭]
【发布时间】:2012-10-27 02:41:22
【问题描述】:

我拥有的这一类只有protected 变量属性,如int healthint level,但没有方法。这是不好的做法吗?我将它用于保存游戏功能,它只需要使用变量,但不需要任何方法。文件如下所示:

人类.h:

// Human.h - Johnny P

#pragma once

namespace SharpEngine {
    class Human {
    protected:
        std::string name;
        int level;
        int health;
        int defense;
        int strength;
        int experience;
        int money;
        int inventory[10];
    };
}

人类.cpp

// Human.cpp - Johnny P

#include <string>
#include "Human.h"

【问题讨论】:

  • 为什么不为此使用结构?
  • @MaxE。为什么不使用一个类呢?
  • 首字母缩写词是 POD = plain old data,您通常使用 struct 而不是 class
  • 在 C 中,历史上,结构被用于此目的。 (在 c++ 中,结构也可以有函数。)所以,坚持这一点,你可以在这里使用结构。

标签: c++ oop class visual-c++ namespaces


【解决方案1】:

嗯,“不良做法”是一个有点累赘的词。

我们宁愿说一个常见的模式是“哑数据”,其中类/结构只是用来包含数据。这与“Plain Old Data”(POD)不太一样,后者是一种 C 兼容结构。

话虽如此,使用“受保护”并不是典型的哑数据模式。使用“受保护”意味着您将从它派生,这意味着至少是一个虚拟析构函数。

【讨论】:

  • +1 评论使用protected 的意图。
  • 那我就把它当作一门课。这样做更有意义。谢谢!
【解决方案2】:

只有头文件的类型很好,抛弃没有实现的“实现文件”。

无用的文件是不好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2015-12-02
    • 2020-03-25
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多