C ++中的结构继承


Answers:


290

是的,除了默认的可访问性是用于(而它是用于)之外,其余部分与之struct完全相同。classpublicstructprivateclass


129

是。默认情况下,继承是公共的。

语法(示例):

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

46

除了Alex和Evan所说的以外,我还要补充一点,C ++结构不像C结构。

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


4
C ++结构可以像C结构一样。如果启用,则称为POD-普通旧数据类型。这是一个重要的区别,因为例如,只有POD结构可以是联合的一部分。
卡姆(Camh)2009年

9
但是POD可以具有方法,因此就Corgshing而言,它不是“像” C结构一样。
史蒂夫·杰索普

如果是POD,则没有方法。否则,该名称将毫无意义。
RL-S


23

在C ++中,结构的继承与类相同,不同之处在于:

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

例如,程序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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.