2009-06-11 25 views

Antwort

221

Ja, struct ist genau wie class außer der Standard Zugänglichkeit public für struct ist (während es private für class ist).

+3

Dies sollte die akzeptierte Antwort sein. – QuantumKarl

19

Natürlich. In C++ sind Strukturen und Klassen fast identisch (zu den kleinen Unterschieden gehören Dinge wie das Veröffentlichen von öffentlichen statt privaten).

99

Ja. Die Vererbung ist standardmäßig öffentlich.

Syntax (Beispiel):

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

Andere als das, was Alex und Evan haben bereits gesagt, möchte ich hinzufügen, dass eine C++ struct nicht eine C-Struktur ist wie.

In C++ kann eine Struktur Methoden, Vererbung usw. genau wie eine C++ - Klasse haben.

+1

eine C++ - Struktur kann wie eine C-Struktur sein. Wenn es ist, nannte es einen POD - Plain Old Datatype. Dies ist ein wichtiger Unterschied, da beispielsweise nur POD-Strukturen Teil von Gewerkschaften sein können. – camh

+6

Aber PODs können Methoden haben, also sind sie nicht "wie" C-Strukturen in dem Sinne, worüber corgshing spricht. –

3

In C++, eine Vererbung der Struktur ist das gleiche wie eine Klasse mit Ausnahme der folgenden Unterschiede:

Wenn eine Struktur aus einer Klasse/Struktur abzuleiten, die Standard-Zugriffs-Bezeichner für eine Basis Klasse/Struktur ist öffentlich. Und beim Ableiten einer Klasse ist der Standardzugriffsspezifizierer privat.

Zum Beispiel schlägt Programm 1 mit einem Kompilierungsfehler und Programm 2 funktioniert gut.

// 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; 
}