2009-06-11 18 views

Odpowiedz

221

Tak, struct jest dokładnie jak class z wyjątkiem domyślny dostępność jest public dla struct (gdy to private dla class).

+3

To powinna być zaakceptowana odpowiedź. – QuantumKarl

19

Oczywiście. W C++, struktury i klasy są prawie identyczne (takie rzeczy jak domyślne publiczne zamiast prywatne należą do małych różnic).

99

Tak. Dziedziczenie jest domyślnie publiczne.

Składnia (przykład):

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

Inne niż to, co Alex i Evan już wspomniano, chciałbym dodać, że struct C++ nie jest jak C struct.

W C++, struktura może mieć metody, dziedziczenie itp., Podobnie jak klasa C++.

+1

Struktura C++ może być jak struktura C. Kiedy jest, nazywa się POD - Plain Old Datatype. Jest to ważne rozróżnienie, ponieważ na przykład tylko struktury POD mogą być częścią związków. – camh

+6

Ale POD mogą mieć metody, więc nie są "podobnymi" strukturami C w znaczeniu, o którym mówi cgorshing. –

3

W C++ dziedziczenie struktura jest taka sama, jak w klasie, z wyjątkiem następujących różnic:

Podczas wyprowadzania struct z klasy/struct, domyślnie dostępu specifier dla klasy bazowej/struct jest publiczna. Podczas wyprowadzania klasy domyślny specyfikator dostępu jest prywatny.

Na przykład program 1 kończy się błędem kompilacji, a program 2 działa poprawnie.

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