7주차 요약

김서영·2021년 10월 17일
0

Private(Protected)과 Public 멤버의 접근 방법

Private(Protected)

private 함수는 외부에서 접근할 수 없으며, public을 통해서만 접근할 수 있다.
private에는 멤버변수가 주로 들어간다.

Public

어디에서나 접근할 수 있다.
외부와 private를 연결하는 통로 역할도 가지고 있다.
멤버변수를 처리하는 멤버함수가 주로 들어간다.

객체의 멤버 호출

직접참조연산자‘.’이나 간접참조연산자 -> 을 사용한다.

  • C와 C++ 이외에는 포인터 객체가 없기 때문에 직접참조연산자‘.’를 많이 사용한다.
  • 게임 소스 등 속도가 중요한 경우, 간접참조연산자‘->’를 많이 사용한다.
    ‘.’은 객체를 이동시키기 때문에 주소만 옮기는 ‘->’에 비해 속도가 느리기 때문이다.

변수와 배열

변수

변수는 하나만 넣을 수 있다.

배열

배열은 많은 수의 변수가 사용될 때 사용하기 유용하다.
대괄호를 이용해서 변수를 몇 개를 넣을 수 있는지 정할 수 있다.
int x[5]면 x[0], x[1], x[2], x[3], x[4] 총 5개의 변수가 생긴다.

일차원 배열

예시: int x[5]
배열의 첫 번째 번호는 0이다.
int x[5]의 첫번째 변수는 x[0]이다.
괄호 안에 있는 숫자는 원소라고 한다.

일차원 배열 초기화

원소가 많음으로 ‘{}’로 묶어서 초기화한다.
초기화할 때는 초기화할 변수의 개수가 정해져 있기 때문에 대괄호 안의 숫자를 안 써도 실행할 수 있다.

문자형 배열 초기화

‘’로 각각의 문자의 원소를 넣는 방법과 “”로 문자열을 넣는 방법이 있다.
''로 원소를 넣는 경우, 마지막 문자는 null문자인 ‘\0’을 사용해야 한다.
“”로 넣는 경우, 마지막에 null문자가 자동으로 포함된다.

배열 초기화 방법

배열 원소가 초기화 데이터보다 많으면 나머지 원소는 모두 0으로 초기화된다.
배열 원소가 초기화 데이터보다 적으면 오류가 발생한다.

다차원 배열

3차원 이상은 어려워서 잘 사용하지 않는다.
2차원 배열은 int x[3][2]의 형태로 사용한다.
2차원 배열의 초기화 방법은 2가지다.
1.int x[4][2]={1,2,3,4,5,6,7,8}

 2.int x[4][2]={1,2}
               {3,4}
               {5,6}
               {7,8}
               

문자열과 문자형 배열

문자열은 두 개 이상의 문자 묶음이다.
문자열은 “”로 묶어야 한다.
‘a’는 1바이트, “a”는 null문자가 자동으로 포함되어 있기 때문에 2바이트다.

배열 복사 strcpy()

strcpy()는 배열 이름만 사용한다.
(첨자를 사용하면 오류가 발생한다.)
visual studio는 안전하지 않다고 경고가 뜬다.
#define _CRT_SECURE_NO_WARNINGS를 넣어야 한다.
Visual Studio의 경우 #include 을 추가해야 하며, 리눅스 환경의 온라인 컴파일러의 경우 #include <string.h>을 추가해야 한다.

생성자와 소멸자

멤버함수이며, 사용자가 꼭 정의할 필요는 없다.(정의하지 않아도 존재한다.)
직접 정의할 경우, 기존에 존재한 값은 사라진다.
자동으로 호출할 수 있다.

생성자

멤버함수의 초기화를 한다.
초기화하지 않으면 멤버함수에는 쓰레깃값이 들어간다.
생성자 이름과 클래스명은 같다.
생성자는 예외로 리턴형을 쓰지 않는다.
리턴값이 없으므로 void형을 지정하면 안 된다.
하나의 클래스에 여러 개가 중복해서 존재할 수 있다.

C++에서 변수를 초기화하는 방법

int a=10; 는 C에서도 쓰이는 방법으로, 복사 초기화다.
사용하는 것을 추천하지 않다.
int a(10); 은 C++에서 추천하는 방법으로, 직접 초기화다.
int a{10}; 은 유니폼 초기화다.

소멸자

객체가 소멸할 때 자동으로 호출된다.
소멸자의 이름은 클래스명과 같다.
생성자의 이름과 같기 때문에, 이를 구분하기 위해 앞에‘~’(tilde)를 붙인다.
하나의 클래스에 유일하다.
리턴형과 매개변수가 없기 때문에 void를 사용할 수 없다.
메모리 청소할 때 쓰인다.

this포인터

자동으로 시스템이 만들어주는 포인터다.
객체의 주소를 가지고 있다.
멤버변수는 객체마다 따로 생성되며, 멤버함수는 모든 객체가 공유한다.
this포인터가 이를 이용하여 현재 객체의 주소를 알 수 있다.


C++프로그래밍(21-2학기)한성현교수 강의 내용 변형 및 요약

0개의 댓글