Back-end/C++ 20

22. 03. 22 - 파일 분할, inline 함수

파일 분할 지금까지 실습하면서 새로운 오브젝트를 만들고 클래스를 만들 때마다 main.cpp 파일을 매번 만들어서 그 안에서 클래스를 만들고 함수를 선언하고 구현해서 실습했었다. 요즘 언어들은 선언부와 구현부를 같이 만든다. BUT! C와 C++ 은 태생적으로 선언부와 구현부를 구별해서 - 파일 분할 형식으로 만든다! 선언부란? - 이런 게 있어; 하고 알려주는 문서 – 컴파일러에게 알려줌 구현부란? - 선언부의 그 문서를 실제 구현한 문서 - 실제 코드로 만든 문서 이처럼 파일 분할 형식으로 선언부와 구현부를 구별해서 만들기 때문에 선언부를 저장하는 헤더(. h ) 파일 구현부를 저장하는 클래스(. cpp ) 파일 2가지로 나눈다. 이처럼 나눠서 컴파일하는 것이 => 분할 컴파일 실습 순서 큰 틀 잡기..

Back-end/C++ 2022.04.02

22.03.21. 복사 생성자, const함수

복사 생성자 생성자란? - 객체가 생성될 때 자동으로 호출되는 함수 생성자의 타입 기본 생성자 – 기본으로 만들 경우 작동 인자를 받는 생성자 – 인자를 전달했을 때 작동 복사 생성자 – 자신의 데이터 타입의 인자가 전달될 때 작동 동일한 데이터 타입의 인자를 받는 생성자 = 복사 생성자 동일한 데이터 타입이다 - 의미 : 할당된 메모리의 공간 size도 동일하고, 쪼개쓰는 방식도 동일하다는 의미 A 데이터 타입의 객체 a를 생성해주고, value값을 100으로 세팅 55번 Line - A 타입의 a 객체에 있는 값이 - b에 전달될 것이다. 55번 Line - A 타입의 b 객체가 생성될 때 – a의 값 (vlaue)을 복사해서 객체가 생성된다. 55번 line은 56번 line처럼 호출된 거랑 동일하..

Back-end/C++ 2022.04.02

22.03.18 - 동적 객체 배열, C언어 형식 지정 문자열, 동적 객체 포인터 배열

강의 흐름 동적 객체 배열 C언어 형식 지정 문자열 동적 객체 포인터 배열 동적 객체 배열 클래스와 생성자를 만들어 주고. 동적 객체 배열 초기화를 위한 함수 Init ( ) 만들어주고 speak( ) 함수 출력 info( ) 함수 만들어 주고 메인에서 배열 생성 및 출력 테스트 배열 생성 ------ Pig* pa = new Pig [ count ]; 배열 초기화 ---- for문 - sprintf(buff) //// pa [ i ]. Init ( buff, i, i, i ); 배열 출력 ----- for문 - pa [ i ]. info( ); 배열 반납 ----- delete [ ] pa; C언어 형식 지정 문자열 %d, %f, %c %d 역할 -> 정수형으로 숫자 123을 출력하려면 문자로 1 / ..

Back-end/C++ 2022.03.25

21.03.17 - 객체 배열, 동적 객체, 개념 플러스(GC,Malloc,Cin)

객체 배열 1~10까지의 int 형 정수들이 저장되어있는 배열이 아닌 Class를 통해서 만든 객체/객체/객체들이 저장되어있는 배열 Monster 클래스를 만들고 -> 그 클래스로 객체를 생성해서 -> 객체 배열을 만들 수 있다. monster 10마리 생성하는 공간을 만들어 보자 Monster 클래스를 만들고 Monster 객체 배열 생성 Monster array [ 10 ]; 클래스로 배열을 만들려면 기본 생성자가 필요하다. 기본 생성자를 만들어 준 후 객체로 배열을 만들고 메모리 공간 어떻게 차지하고 있는지 확인 이렇게 있는 객체 배열에 값을 넣고 싶으면 Init이라는 함수를 만들어서 초기화시킨다. 함수와 for 문으로 배열 값 초기화 - Init( ) - 함수 활용 함수와 for 문으로 배열 값들..

Back-end/C++ 2022.03.24

22.03.16 - this 포인터, 네임맹글링(오버로딩), 배열

강의 흐름 this 포인터 - 객체의 메모리 공간, 멤버 함수의 메모리 공간, 멤버 함수 호출 네임 맹글링 - 오버 로딩, 오버 로딩 가능한 함수인지 불가능한 함수인지 배열 - 배열 개념, 배열명,배열식,인덱스활용 for문 this 포인터 this를 자기 참조형 포인터라고 한다. this를 who am I 포인터라고도 한다. 멤버 함수는 this 값이 필요하다. -- 객체를 통해서만 접근 가능하기 때문에. Monster 클래스 안에는 멤버 변수, 생성자, 멤버 함수가 존재한다. 이 Monster 클래스를 이용하여 객체를 생성한 뒤 객체의 메모리 공간을 살펴보자. 여기서 알 수 있는 점! 생성된 객체의 메모리 공간에는 멤버 변수만 있고, 멤버 함수는 없다. 멤버 함수는 클래스 영역에 하나가 만들어져 있는 ..

Back-end/C++ 2022.03.24

22.03.15 - 정적 멤버 변수, 정적 멤버 함수, 함수 호출 방식

강의 흐름 정적 멤버 변수와 정적 멤버 함수의 개념 설명 C++에서 함수의 호출 방식 3가지 체크 전날 복습 객체가 만들어질 때 생성자 반드시 필요하다. 내가 만들지 않으면 자동으로 컴파일러 만들어준다. 생성자를 반드시 내가 만들어줘야 하는 경우 2가지 const형 변수가 있는 경우 참조형(&) 변수가 있는 경우 2가지 경우 - 생성자를 만들 시 생성자 초기화 리스트를 통해서만 초기화 가능 { } 중괄호 블록은 범위를 지정하는 데 사용 = scoupe라고 부른다. 객체는 scoupe안에서만 통용되는 애다. - scoupe 빠져나갈 때 없어진다. 정적 멤버 변수 지정 형식 - static int count; 특징 1. 정적 멤버 변수는 클래스 밖에서 초기화해줘야 한다. 특징 2. 정적 멤버 변수의 위치는 ..

Back-end/C++ 2022.03.18

22.03.14 - 포인터형, 참조형, const형 변수

강의 흐름 전날 가볍게 살펴본 포인터형과 참조형 추가 설명 const형 변수가 무엇인지 생성자 부분에서의 참조형과 const형의 활용과 특징 포인터형 C와 C++은 변수가 메모리에 할당받은 주소 값을 저장하는 데이터 타입을 가지고 있다 - 그 데이터 타입이 포인터형! 포인터형으로 만들어진 애들이 가지고 있는 값은 : 주소 값! 포인터형으로 만들려면 어떤 데이터 타입이 저장되어있는지 알아야 한다.. & ( 주소 연산자 ) 변수의 주소 값을 돌려준다. int a = 100; &a = 2000번지; ==> int 100이 저장되어있는 변수 a의 주소 값 여기서 포인터형( * ) 은 포인터형 지정자로 사용! int* ==========> ( int값을 저장하고 있는 공간의 주소 값 )을 저장할 수 있는 데이터 ..

Back-end/C++ 2022.03.18

22.03.11 - 생성자 초기화 리스트, 포인터형과 참조형

오늘 강의의 전체 흐름 생성자 리스트 설명하기 위해 ( 객체, 생성자, 소멸자, 멤버 변수 초기화 ) 개념 잡고 접근 포인터형과 참조형 설명하기 위해 ( 함수와 변수, 데이터 타입 ) 개념 잡고 접근 객체 - It 쪽에서 말하는 객체와 게임 쪽에서 말하는 객체의 정의가 다르다. 대상 객체가 될 수 있는 공통 조건 -> 데이터화를 시킬 수 있어야 한다는 점 IT 쪽에서는 - 현실 세계에 있는 명사나 대명사로 표현 가능한 모든 것 게임 쪽에서는 - 용, 귀신, 악마 등 상상할 수 있는 모든 것 생성자 객체를 생성하는 경우 생성자가 반드시 필요하다. 그런데 우리가 생성자를 안 만들어도 객체가 만들어지는 이유는? 생성자를 따로 만들지 않는 경우 컴파일러가 자동으로 기본 생성자 코드를 삽입해준다. 다만, 인자를 ..

Back-end/C++ 2022.03.16

22.03.10 - 캡슐화, 객체, 접근 제어자, Set/Get함수

추상화와 캡슐화 대상 객체의 수많은 정보 중에 필요한 정보만 추출해서 단순화시키고 추상화시켜서 컴퓨터에 입력! (건담 프라하 / 모델링 등) 컴퓨터가 알아들을 수 있는 정보로 입력 ( 데이터 타입 / 언어 (C++, java 등) ) 캡슐화 ( 단순화한 정보들 입력 – 클래스 데이터 타입과 클래스명 안에다가 입력 ) 멤버 변수는 속성 나타냄 (prosperity) ( attribute ) / 다른 객체와 구별되는 값! / a, b가 구별되는 값 객체 Son a; Son이라는 데이터 타입으로 a라는 변수를 만든 것이고 a 변수의 속성을 입력한 것 Son b; Son이라는 데이터 타입으로 b라는 변수를 만든 것이고 b 변수의 속성을 입력한 것 클래스형 데이터 타입으로 만들어진 변수를 객체라고 한다. ( 변수..

Back-end/C++ 2022.03.13

22.3.8. - 기초 개념 정의

첫 번째 프로그래밍 언어를 배우는 목적은? - 컴퓨터 일 시키려고 / 사람의 언어를 컴파일시켜서 컴퓨터의 언어로 컴퓨터 장치들 연산장치 (CPU) 저장장치 (ram / HDD ) 입출력 장치 ( 모니터/스피커/키보드/마우스 등) OS - 운영체제 ( 윈도우/ 리눅스/ 안드로이드 등) 프로그램 작동 구조 프로그램 설치 시 하드디스크에 저장된다. 저장된 프로그램은 메모리에 올라간다. cpu가 메모리에 올라가 있는 프로그램 명령어 불러다가 읽어가면서 실행되는 것이다. 이때 cpu는 1초에 100만 HDD는 1초에 5만 읽을 수 있다고 한다면 모든 장치는 HDD 속도에 맞춰진다. 1:1로 작용한다고 하면 cpu의 95%가 노는 중이다. 이 시간을 cpu idle 타임이라고 한다. 이 시간을 줄이기 위해 cpu와..

Back-end/C++ 2022.03.13