C++/명품 C++ Programming

[4]명품 C++ Programming -3장[클래스와 객체](1)-[내용 정리]

Tomato_Coffee 2022. 5. 6. 17:59

1. Class를 사용해서 캡슐화를 시킬수있다.

2. 클래스는 개체를 정의하는 틀 또는 설계도이다.

클래스에 (멤버 변수)와(멤버 함수)를 선언한다.

3. 클래스를 만들때 뒤에 세미콜론(;)을 뒤에 꼭 붙여야한다.

4. 클래스 안에서 접근지정자를 설정할수 있다.

접근지정자의 종류: private( 디폴트값), public, protected--->아무런 접근지정자를 안써주면 기본값으로 private으로 설정이됨

private은 클래스 내의 멤버 함수들에게만 접근이 허용이됨

public 클래스 내외를 막론하고 모든 함수들에게 접근이 허용

protected 클래스 내의 멤버함수와 이 클래스를 상속받은 파생 클래스의 멤버함수에게만 접근이 허용

 

5. 클래스의 선언부, 구현부를 분리해서 작성해야한다. 같이 써도 상관없으나 클래스의 재사용을 하기위함이다.

컴파일시에는 클래스의 선언부만 필요하다.

6. 객체멤버에 접근하기 위해서는 (.)을 붙여서 사용하면됨(c언어에서 구조체를 사용하는 방식과 동일하다)

7. 생성자함수는 오직 딱 한번만 생성됨

ex: Circle :: Circle

8. 생성자함수는 클래스의 이름과 동일하게 작성되어야함.

9. 생성자함수는 원형에 리턴 타입을 선언하지 않음

10. 생성자함수는 중복 가능하다.

11. 작성자가 생성자함수를 작성하지 않으면 시스템에서 디폴트 생성자가 자동으로 생성해줌

12. 생성자 함수안에서 멤버변수 초기화를 해주는 역할을 수행함.

13. 소멸자는 생성자를 소멸시킨다. 객체들은 만들어진 순서대로 소멸하는 것이 아니라, 생성된 순서의 반대로 소멸이됨. 생성자 앞에 ~을 넣어준다.

ex: Circle :: ~Circle

14. 소멸자가 없으면 기본 소멸자가 자동으로 생성이됨 

15. 소멸자는 객체가 사라질 때 필요한 마무리 작업을 위함

예를 들어서 1. 동적으로 할당받은 메모리를 운영체제에게 돌려줌, 2. 열어놓은 파일을 저장하고 닫거나, 3. 연결된 네트워크 해제 할때.

16. c++에도 구조체가 있다. 구조체는 디폴트 접근지정자가 public 이다. 책에서는 구조체보다 클래스를 사용하길 권장함

17. 교수님은 멤버변수는 private으로 설정하고, 나머지는public으로 선언하는것을 권장함

18. 클래스를 헤더 파일과 cpp파일 분리 

- 소스코드는 그 자체로 완벽해야함

- 소스코드는 소스코드를 넘어서 볼수없다.

- 헤더파일은 컴파일이 안됨

- 헤더 파일을 만들때는 헤터파일만으로도 내용이 전부 이해가야함

- 소스코드없이 헤더파일 만들어도됨 (교과서 141페이지 참고)

- 컴파일은 "이런함수와 변수가 있어" 정도만 있으면 컴파일은 문제가 없음, 즉, 함수와 변수의 구체적인 내용을 몰라도됨

-재정의 오류 방지법(헤더파일을 중복으로 include 할때 생기는 문제점 해결

예시

#ifndef CIRCLE_H

#define CIRCLE_H

.

.

.

#endif

 

 

substr 함수를 사용하는법

substr 사용법
substr사용예시, 지정한 위치에서부터 지정한 길이만큼 문자열 취득
2번째 인자는 생략이 가능함, 대신에 시작위치부터 끝까지 출력이됨

find 함수 사용법을 알아보자

find함수 사용법-1

자 컴파일을 시킨 뒤 파일을 실행을 시켜보니,

첫 번째로는 'g' 가 문자열에서 위치하고 있는 곳을 0부터 센 결과인 6이,

두 번째로는 문자열에 위치하고 있는 'cdef' 의 시작 인덱스 값 2가 출력됨을 볼 수 있다.

 

find함수 사용법-2