【发布时间】:2011-04-04 04:40:12
【问题描述】:
我正在研究我正在使用的 API 的实现。
我注意到一个结构是从一个类继承的,我停下来思考它......
首先,我没有在我研究的 C++ 手册中看到一个结构可以从另一个结构继承:
struct A {};
struct B : public A {};
我猜在这种情况下,结构 B 继承自结构 A 中的所有数据。我们可以在结构中声明公共/私有成员吗?
但我注意到了这一点:
class A {};
struct B : public A {};
来自我的在线 C++ 手册:
类是数据结构的扩展概念:它不仅可以保存数据,还可以保存数据和函数。
即使类 A 有一些成员函数,上述继承是否有效?当结构继承它们时,函数会发生什么?反过来呢:从结构继承的类?
实际上,我有这个:
struct user_messages {
std::list<std::string> messages;
};
我曾经像 foreach message in user_messages.messages 这样迭代它。
如果我想将成员函数添加到我的结构中,我可以更改它的声明并将其“提升”为一个类,添加函数,并且仍然像以前一样迭代我的 user_messages.messages 吗?
显然,我还是个新手,还不清楚结构体和类之间是如何交互的,两者的实际区别是什么,继承规则是什么……
【问题讨论】:
-
stackoverflow.com/questions/577465/… 看起来像这个问题的重复
-
for_each 循环是在类/结构内部还是外部?
-
@chubsdad 它在外面。 HTML 模板递归遍历 messages.messages 以呈现为 HTML。
-
@augustin:我最初的感觉是为“messages”类提供一个“迭代器”设计模式,而不是让成员“messages”公开。
-
@augustin:虽然目前不相关,但关键字'struct'和'class'有一点区别。关键字“class”可以与模板一起使用,但不能使用关键字“struct”来定义类型参数
标签: c++ class inheritance struct