쑤쑤_CS 기록장

[TIPS 20기]9. C++언어 두번째 강좌 정리 본문

IT 지식 기록/TIPS - C 언어 수업 정리

[TIPS 20기]9. C++언어 두번째 강좌 정리

(╹◡╹)_ 2019. 2. 14. 20:40
728x90



[ 강의 정리 ]


지난 시간 첫 C++언어 강좌 수업을 했는데요, (이전 글 참조)


2019년 1월 28일 두번째 C++언어 강좌 수업 정리를 시작합니다 : )


* 접근제한자

: 프로그래머의 style을 잡아주기 위함(기계어 코드는 동일함). 프로그래머가 함수를 만들도록 유도 -> 변화를 잘 대처할 수 있도록

- private

외부에서 이 멤버에 접근을 못하게 함 ex)data.age 불가. SetAge()함수 이용

public 영역에서 값을 쓰는 방법으로, 변수를 직접 쓰지 않고 함수를 쓰게 함 (프로그래머가                         함수를 쓰는 style로)

- 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
class Student                                                                                            
 
        {
 
        private:
 
            int age;
 
        public:
 
            Student() //생성자
 
            {
 
                age=0;
 
            }
 
            ~Student() //파괴자
 
            {
 
            }
 
            void SetAge(int a)
 
            {
 
                age = a;
 
            }
 
            int GetAge()
 
            {
 
                return age;
 
            }
 
        }
cs


- 데이터 멤버는 private로!



* C++언어

- 자판기 만들기

- 클래스를 만드는 사람 / 쓰는 사람으로 역할이 나뉨 (생산자, 소비자 관계)

- 개발자가 잘 못하는걸(자동으로 초기화) 컴파일러가 가능하게 하도록

--> (객체)생성자 : 객체를 자동 초기화 해주는 개념

객체를 만들어 쓰기 <- 초기화 제대로 <- 설명 필요 <- 자동으로 컴파일러가  <- 클래스와 똑같은 이름의 함수 : 초기화 하는 함수 로 정함


- 생성자 : 객체가 생성될 때 자동으로 등장 (생성자 여러개 가능)

- 파괴자 : 객체가 사라질 때 자동으로 등장 (함수가 끝나는 위치에 컴파일러가 넣어줌) (없거나 1개만 가능)

+) 문자열이 없다는 표현 (if문 없애도록)

//생성자 코드

mp_string = (char *)malloc(1);

*mp_string = 0;



* 오버로딩

- 의미가 넘침. 한 단어가 여러개의 뜻을 가지는 과적 상태.

- 만들어진 이유 ? 개발자가 이름짓는데 갖는 스트레스를 줄여주기 위함

- 이름 같음. 인자의 개수 다름


* 상속 (파생 클래스)

- 변화가 생겼을 때 함수 / 클래스 를 따라다니며 모두 바꾸면 안됨

- 클래스에 다른 기능(Test)을 추가할 때 코드 중복을 피하기 위해 : '컴파일러야 여기에다가 앞의class A 코드 넣어줘'

class AExt : public A{

void Test(){

}

}

중복 코드를 적지 않고 상속 이용

자식은 부모보다 크기가 크거나 작다

- private(자식과공유 x), protected(자식과공유 o & 외부와공유 x), public(모두와 공유 o) //private은 단일클래스일 때만 의미있으므로, protected를 더 많이 사용한다(상속의 의미)



* 오버라이딩

- 교체 시킴

- 복사 시 함수 이름이 같으면 에러가 나므로, B :: C의 형태로 나타낸다. 부모 B에 속해있는 C함수 라는 의미이다.

- C함수는 자기 우선으로, 부모와 다른 교체된 내용인 자신이 사용 됨

- 자식이 매개변수까지 부모와 같음

+) 부모꺼와 중복 코드 -> A::C 이용(부모A의 함수C)

- 이름 같음. 인자 같음. 상속 으로 인해 존재.

+) 소속이 다르거나(A::C, B::C) 없으면(클래스에 속하지 않음, ::C) 다른것으로 취급(모두 다른 C이다)

+) 어디 안에 소속되어있다는 뜻의 '스코프 연산자 :: '

++) namespace NAME

{

}

//이름 같아서 문제 생기는 걸 방지하기 위해 namespace를 이용하여 구분 가능 -> namespace ::

usingnamespace std // namespace::를 계속 써야하는 불편함을 해결해줌

class도 namespace의 일종이다

코드를 보여주고 싶지 않을 때, class 안에 넣지 않을 때 등도 이용 가능




-> * 문제 해결법, 프로그램이 어려워 지는 이유?

1) [P]데이터에 변화가 왔을 때 대처 <- 함수 ([S]접근제한자)

2) 중복 코드 - 함수, [P]클래스의 중복 <- [S]상속

c++ 컴파일러

* data type 하나로 모두 유지 가능하게 만드는 기술 : '다형성'

(다음 수업 때)



https://m.blog.naver.com/PostView.nhn?blogId=tipsware&logNo=221329908922&referrerCode=0&searchKeyword=Mfc

 <mfc 이야기>



#Tips강좌 #Tips프로그래밍강좌 #김성엽 #지식나눔강좌 #tipssoft



728x90
Comments