Struct arv i C ++

stemmer
130

Kan en structvære arvelig i C ++?

Publisert på 11/06/2009 klokken 03:42
kilden bruker
På andre språk...                            


5 svar

stemmer
236

Ja, structer akkurat som classmed unntak av standard tilgjengelighet er publicfor struct(mens det er privatefor class).

Svarte 11/06/2009 kl. 03:44
kilden bruker

stemmer
102

Ja. Arven er offentlig som standard.

Syntax (eksempel):

struct A { };
struct B : A { };
struct C : B { };
Svarte 11/06/2009 kl. 03:45
kilden bruker

stemmer
39

Annet enn det Alex og Evan har allerede nevnt, vil jeg gjerne legge til at en C ++ struct er ikke som en C struct.

I C ++, kan en struct har metoder, arv, etc. akkurat som en C ++ klasse.

Svarte 11/06/2009 kl. 03:49
kilden bruker

stemmer
21

Selvfølgelig. I C ++, structs og klasser er nesten identiske (ting som misligholde til offentlig istedenfor privat er blant de små forskjeller).

Svarte 11/06/2009 kl. 03:44
kilden bruker

stemmer
9

I C ++, er en struktur arv den samme som en klasse, bortsett fra de følgende forskjeller:

Når utlede en struct fra en klasse / struct, er standard tilgangs-specifier for en base klasse / struct publikum. Og da utlede en klasse, er standard tilgangs Specifier privat.

For eksempel, program 1 mislykkes med en kompileringsfeil og program 2 fungerer fint.

// 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;
}
Svarte 02/12/2016 kl. 07:32
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more