在C结构继承++在C结构继承++(Struct inheritance in C++)

2019-05-13 10:29发布

可以在struct中的C ++继承?

Answer 1:

是的, struct是完全一样class ,除了默认的可访问性是publicstruct (虽然这是privateclass )。



Answer 2:

是。 继承默认情况下公开。

语法(例如):

struct A { };
struct B : A { };
struct C : B { };


Answer 3:

除了亚历克斯和埃文已经说过,我想补充的是一个C ++结构并不像C结构。

在C ++中,结构可以有方法,继承等就像一个C ++类。



Answer 4:

当然。 在C ++中,结构和类是几乎相同的(东西像默认为公开,而不是私人的小分歧中)。



Answer 5:

在C ++中,一个结构的继承是相同,除了以下不同的类:

当从一个类/结构推导结构,默认的访问说明符基类/结构是公共的。 而派生一个类时,默认的访问说明符是私有的。

例如,程序1失败,编译错误和程序2个工作正常。

// Program 1
#include <stdio.h>

class Base {
    public:
        int x;
};

class Derived : Base { }; // Is equivalent to class Derived : private Base {}

int main()
{
    Derived d;
    d.x = 20; // Compiler error because inheritance is private
    getchar();
    return 0;
}

// Program 2
#include <stdio.h>

struct Base {
    public:
        int x;
};

struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}

int main()
{
    Derived d;
    d.x = 20; // Works fine because inheritance is public
    getchar();
    return 0;
}


文章来源: Struct inheritance in C++