struct -> 기본이 publicclass -> 기본이 privatestruct -> 기본이 publicclass -> 기본이 privatestruct -> 단순 데이터 묶음에 사용class -> 객체지향적 설계에 사용-> struct는 c언어 스타일처럼 데이터 묶음을 표현하기 위해 만들어짐
-> class는 객체지향적으로 캡슐화를 기본 전제로 설계되어 만들어짐
| 부모 멤버 접근 지정자 | public 상속 시 | protected 상속 시 | private 상속 시 |
|---|---|---|---|
public | public | protected | private |
protected | protected | protected | private |
private | 접근 불가 | 접근 불가 | 접근 불가 |
-> public 상속은 그대로 유지되고, private 상속은 다 잠가버린다.
struct는 기본 public 상속이고, class는 기본 private 상속이기 때문에 주의해야 한다.struct Base {
Base(int v) : value(v) {}
int value;
void printBase() {
cout << "Base Value: " << value << endl;
}
};
class Derived : Base {
public:
Derived(int v) : Base(v) {}
void printDerived() {
cout << "Derived Value: " << value << endl;
}
};
int main() {
Derived d(42);
d.printDerived();
// d.printBase(); // private 상속이라 외부에서 접근 불가
return 0;
}