结构和类

时间:2011-10-24 19:29:58

标签: c++ class struct

  

可能重复:
  What are the differences between struct and class in C++

在C ++中,有没有理由在创建自己的链表或b-tree之外的类中使用Struct?

我在大学里学过一些编程课程,但到目前为止还没有真正考虑过这个问题。似乎在类中使用struct没有任何好处,但我没有足够的经验来了解哪些情况确实需要某些东西。我希望你有经验的程序员可以为我阐明一些。

4 个答案:

答案 0 :(得分:3)

是。当你想要建模一个复杂的对象时,它包含了父对象实现内部的子对象,这是一个很好的例子。

还可以使用这种技术(例如Observer和Delegate)实现许多设计模式。

答案 1 :(得分:1)

结构和类是一回事。

  

在C ++中,有没有理由在创建自己的链表或b-tree之外的类中使用Struct?

这是一个愚蠢的问题。当然有。内部类型是一种工具,当您遇到需要它的问题时,您可以使用它。例如,迭代器通常被制作为内部类型(不是它们,但它将类型实现保存在一个地方)。

答案 2 :(得分:0)

在C ++中你可以做很多事情,所以是的,其中一些最好用类中的结构来实现。

人们使用结构的一个原因是构建它们的数组,这使得跟踪相关变量非常容易。因此,一个示例是可以对相关变量列表执行操作的类。你是正确的,制作链表是一个有用的例子。

另一个例子是简单的地址簿或交易清单,您可以在其中保留可以对其成员执行操作的单独书籍。

答案 3 :(得分:0)

这是一个复杂的场景:子记录的记录。

struct Title_Record
{
    unsigned int id_title;
    std::string  title_text;  // std::string is actually a struct / class.
};

struct Category_Record
{
    unsigned int id_category;
    std::string  category_text;
};

// A record of [id_ingredient, id_title, id_category],
class Ingredient_Entry
{
    unsigned int id_ingredient;
    Title_Record  title;        // Use ID field only for storing in database (foreign key).
                                // But also contain the record for local access.
    Category_Record  category;  // Use ID field only for storing in database (foreign key).

。     };

每个成分条目都有标题和类别。标题和类别是单独的记录,因此成分可以共享共同的标题和类别。

使用方法: Title_Record title_table [30]; // 30个标题的数据库表。 Category_Record category_table [30]; // 30个类别的数据库表。

请注意,关键字structclass仅在默认辅助功能方面有所不同。