嵌套结构/类之间的区别以及在类中声明类实例

时间:2016-10-08 21:55:17

标签: c++

假设我们有两个结构,bigguy和foryou。

我们可以这样声明:

struct bigguy
{
    struct foryou
    {
        int survivors;
    }cia, pavel;
};

或者我们可以这样声明:

struct foryou
{
    int survivors;
};

struct bigguy
{
    foryou cia;
    foryou pavel;
};

每种声明的优点和缺点是什么?它取决于该计划的目的吗?一种方法比其他方法更好吗? (假设在假设程序中有一个实际的理由不仅仅将所有内容都声明为单一结构。)

1 个答案:

答案 0 :(得分:0)

以下是几个结构的嵌套结构的一些优点:

  • 您可以隐藏private部分中的嵌套结构。因此,其余的代码不需要处理它。
  • 重构可能更容易。
  • bigguy的每个派生类自然会看到foryou,即使它们位于不同的名称空间或范围内。嵌套enum也很有趣,因为你可以引用枚举常量而不用命名空间上下文作为前缀。

以下是嵌套结构的几个结构的一些优点。

  • 如果要在foryou类之外使用bigguy结构,则需要在其前面添加bigguy::,这有时是一种沉重的语法。请注意,auto对于避免此类声明很有意思。
  • 如果bigguy是模板类,您将有更多可理解的编译器消息,并且您将避免使用typename。实际上,如果bigguy是模板类,并且foryou不需要模板参数,则首选几个结构。更好的是,您可以从内部具有bigguy的非模板类派生您的foryou模板化类。