可能重复:
What are the differences between struct and class in C++
在C ++中,有没有理由在创建自己的链表或b-tree之外的类中使用Struct?
我在大学里学过一些编程课程,但到目前为止还没有真正考虑过这个问题。似乎在类中使用struct没有任何好处,但我没有足够的经验来了解哪些情况确实需要某些东西。我希望你有经验的程序员可以为我阐明一些。
答案 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个类别的数据库表。
请注意,关键字struct
和class
仅在默认辅助功能方面有所不同。