코락 CoRock
코딩하는 락스타
코락 CoRock
  • 분류 전체보기 (393)
    • frameworks (19)
      • spring (19)
      • spring-boot (0)
      • testing (0)
    • languages (94)
      • java (39)
      • kotlin (0)
      • python (42)
      • r (13)
    • libraries (0)
    • programming (239)
      • android (13)
      • c (17)
      • cpp (22)
      • database (18)
      • design-pattern (4)
      • data-structures (11)
      • git (8)
      • hadoop (6)
      • html-css (7)
      • issue (4)
      • javascript (26)
      • jsp (34)
      • os (29)
      • php (6)
      • preferences (19)
      • etc (15)
    • discography (37)
      • k-pop (18)
      • pop (19)
    • blog (3)

블로그 메뉴

  • Programming
  • Java
  • JavaScript
  • Discography
  • K-Pop Songs
  • Pop Songs
  • Blog
  • Guestbook

공지사항

인기 글

태그

  • javascript
  • Spring
  • 파이썬
  • CentOS
  • python
  • r
  • Java
  • linux
  • jsp
  • 자바스크립트
  • Android
  • oracle

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
코락 CoRock

코딩하는 락스타

[C++] Class 간의 상속 연습문제
programming/cpp

[C++] Class 간의 상속 연습문제

2018. 3. 9. 11:54
반응형



1. public 상속 관계

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
using namespace std;
 
class A {
    int a1;        // 1 넣을 거야
protected:
    int b1;        // 2
public:
    int c1;        // 3
 
    // setter, getter
    void setA1(int n) { this->a1 = n; }
    int getA1() const {    return this->a1; }
    void setB1(int n) { this->b1 = n; }
    int getB1() const { return this->b1; }
};
 
class B : public A {
    int a2;        // 4
protected:
    int b2;        // 5
public:
    int c2;        // 6
    
    // setter, getter
    void setA2(int n) { this->a2 = n; }
    int getA2() const { return this->a2; }
    void setB2(int n) { this->b2 = n; }
    int getB2() const { return this->b2; }
};
 
class C : public B {
    int a3;        // 7
protected:
    int b3;        // 8
public:
    int c3;        // 9
 
    // setter, getter
    void setA3(int n) { this->a3 = n; }
    int getA3() const { return this->a3; }
    void setB3(int n) { this->b3 = n; }
    int getB3() const { return this->b3; }
};
 
void main()
{
    // 직접 접근 가능한 건 직접 값을 표현할 것
    // 직접 접근 불가능한 건 '함수'로 표현
 
    /*
        a1 = 1;
        b1 = 2;
        c1 = 3;
        
        a2 = 4;
        b2 = 5;
        c2 = 6;
        a3 = 7;
        b3 = 8;
        c3 = 9;
    */
 
    C cc;
 
    cc.setA1(1);
    cc.setB1(2);
    cc.c1 = 3;
    cc.setA2(4);
    cc.setB2(5);
    cc.c2 = 6;
    cc.setA3(7);
    cc.setB3(8);
    cc.c3 = 9;
    
    cout << cc.getA1() << endl;
    cout << cc.getB1() << endl;
    cout << cc.c1 << endl;
    cout << cc.getA2() << endl;
    cout << cc.getB2() << endl;
    cout << cc.c2 << endl;
    cout << cc.getA3() << endl;
    cout << cc.getB3() << endl;
    cout << cc.c3 << endl;
}
Colored by Color Scripter
cs
\


2. protected 상속 관계

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
using namespace std;
 
class A {
    int a1;        // 1 넣을 거야
protected:
    int b1;        // 2
public:
    int c1;        // 3
 
    // setter, getter
    void setA1(int n) { this->a1 = n; }
    int getA1() const { return this->a1; }
    void setB1(int n) { this->b1 = n; }
    int getB1() const { return this->b1; }
    void setC1(int n) { this->c1 = n; }
    int getC1() const { return this->c1; }
};
 
class B : protected A {
    int a2;        // 4
protected:
    int b2;        // 5
public:
    int c2;        // 6
 
    // setter, getter
    void setA2(int n) { this->a2 = n; }
    int getA2() const { return this->a2; }
    void setB2(int n) { this->b2 = n; }
    int getB2() const { return this->b2; }
    void setC2(int n) { this->c2 = n; }
    int getC2() const { return this->c2; }
};
 
class C : protected B {
    int a3;        // 7
protected:
    int b3;        // 8
public:
    int c3;        // 9
 
    // setter, getter
    void setA1(int n) { A::setA1(n); }
    int getA1() const { return A::getA1(); }
    void setB1(int n) { A::setB1(n); }
    int getB1() const { return A::getB1(); }
    void setC1(int n) { A::setC1(n); }
    int getC1() const { return A::getC1(); }
 
    void setA2(int n) { B::setA2(n); }
    int getA2() const { return B::getA2(); }
    void setB2(int n) { B::setB2(n); }
    int getB2() const { return B::getB2(); }
    void setC2(int n) { B::setC2(n); }
    int getC2() const { return B::getC2(); }
 
    void setA3(int n) { this->a3 = n; }
    int getA3() const { return this->a3; }
    void setB3(int n) { this->b3 = n; }
    int getB3() const { return this->b3; }
};
 
void main()
{
    // 직접 접근 가능한 건 직접 값을 표현할 것
    // 직접 접근 불가능한 건 '함수'로 표현
 
    /*
    a1 = 1;
    b1 = 2;
    c1 = 3;
    a2 = 4;
    b2 = 5;
    c2 = 6;
    a3 = 7;
    b3 = 8;
    c3 = 9;
    */
 
    C cc;
 
    cc.setA1(1);
    cc.setB1(2);
    cc.setC1(3);
    
    cc.setA2(4);
    cc.setB2(5);
    cc.setC2(6);
 
    // ? 왜 c1, c2는 직접 접근이 가능한가
    cc.setA3(7);
    cc.setB3(8);
    cc.c3 = 9;
 
    cout << cc.getA1() << endl;
    cout << cc.getB1() << endl;
    cout << cc.getC1() << endl;
    cout << cc.getA2() << endl;
    cout << cc.getB2() << endl;
    cout << cc.getC2() << endl;
    cout << cc.getA3() << endl;
    cout << cc.getB3() << endl;
    cout << cc.c3 << endl;
}
Colored by Color Scripter
cs


3. private 상속 관계

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
using namespace std;
 
class A {
    int a1;        // 1 넣을 거야
protected:
    int b1;        // 2
public:
    int c1;        // 3
 
    // setter, getter
    void setA1(int n) { this->a1 = n; }
    int getA1() const { return this->a1; }
    void setB1(int n) { this->b1 = n; }
    int getB1() const { return this->b1; }
    void setC1(int n) { this->c1 = n; }
    int getC1() const { return this->c1; }
};
 
class B : private A {
    int a2;        // 4
protected:
    int b2;        // 5
public:
    int c2;        // 6
 
    // setter, getter
    void setA1(int n) { A::setA1(n); }
    int getA1() const { return A::getA1(); }
    void setB1(int n) { A::setB1(n); }
    int getB1() const { return A::getB1(); }
    void setC1(int n) { A::setC1(n); }
    int getC1() const { return A::getC1(); }
 
    void setA2(int n) { this->a2 = n; }
    int getA2() const { return this->a2; }
    void setB2(int n) { this->b2 = n; }
    int getB2() const { return this->b2; }
    void setC2(int n) { this->c2 = n; }
    int getC2() const { return this->c2; }
};
 
class C : private B {
    int a3;        // 7
protected:
    int b3;        // 8
public:
    int c3;        // 9
 
    // setter, getter
    void setA1(int n) { B::setA1(n); }
    int getA1() const { return B::getA1(); }
    void setB1(int n) { B::setB1(n); }
    int getB1() const { return B::getB1(); }
    void setC1(int n) { B::setC1(n); }
    int getC1() const { return B::getC1(); }
 
    void setA2(int n) { B::setA2(n); }
    int getA2() const { return B::getA2(); }
    void setB2(int n) { B::setB2(n); }
    int getB2() const { return B::getB2(); }
    void setC2(int n) { B::setC2(n); }
    int getC2() const { return B::getC2(); }
 
    void setA3(int n) { this->a3 = n; }
    int getA3() const { return this->a3; }
    void setB3(int n) { this->b3 = n; }
    int getB3() const { return this->b3; }
};
 
void main()
{
    // 직접 접근 가능한 건 직접 값을 표현할 것
    // 직접 접근 불가능한 건 '함수'로 표현
 
    /*
    a1 = 1;
    b1 = 2;
    c1 = 3;
    a2 = 4;
    b2 = 5;
    c2 = 6;
    a3 = 7;
    b3 = 8;
    c3 = 9;
    */
 
    C cc;
 
    cc.setA1(1);
    cc.setB1(2);
    cc.setC1(3);
 
    cc.setA2(4);
    cc.setB2(5);
    cc.setC2(6);
 
    // ? 왜 c1, c2는 직접 접근이 가능한가
    cc.setA3(7);
    cc.setB3(8);
    cc.c3 = 9;
 
    cout << cc.getA1() << endl;
    cout << cc.getB1() << endl;
    cout << cc.getC1() << endl;
    cout << cc.getA2() << endl;
    cout << cc.getB2() << endl;
    cout << cc.getC2() << endl;
    cout << cc.getA3() << endl;
    cout << cc.getB3() << endl;
    cout << cc.c3 << endl;
}
Colored by Color Scripter
cs

반응형
저작자표시 비영리 변경금지 (새창열림)
    'programming/cpp' 카테고리의 다른 글
    • [C++] Dynamic Binding(동적 바인딩)
    • [C++] 클래스 관계를 이용한 급여관리 프로그램
    • [C++] 클래스 상속
    • [C++] Has-a 관계로 구현한 성적관리프로그램
    코락 CoRock
    코락 CoRock
    A COder dreaming of being a ROCKstar

    티스토리툴바