C ++의 구조 상속


답변:


290

네, struct정확히처럼 class기본 접근성은 제외 public위해 struct(그것의 상태 private에 대한 class).



46

Alex와 Evan이 이미 언급 한 것 외에도 C ++ 구조체는 C 구조체와 다르다고 덧붙이고 싶습니다.

C ++에서 구조체는 C ++ 클래스와 마찬가지로 메서드, 상속 등을 가질 수 있습니다.


4
C ++ 구조체는 C 구조체와 비슷할 수 있습니다. 그렇다면 POD-Plain Old Datatype이라고합니다. 예를 들어, POD 구조체 만 공용체의 일부가 될 수 있으므로 중요한 차이점입니다.
camh

9
그러나 POD는 메소드를 가질 수 있으므로 cgorshing이 말하는 의미에서 "like"C 구조체와 다릅니다.
Steve Jessop

POD 인 경우 메소드가 없습니다. 그렇지 않으면 그 이름은 의미가 없습니다.
RL-S

24

물론이야. C ++에서 구조체와 클래스는 거의 동일합니다 (비공개 대신 공개를 기본값으로하는 것과 작은 차이가 있습니다).


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;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.