🎮 컴퓨터 과학 216

C++ OPP 3대요소 : 캡슐화

A. OPP 캡슐화 1. 프렌드 a. 프렌드란? C++에서는 객체의 private 멤버는 해당 객체의 public 멤버 함수를 통해서만 접근 가능함 하지만 경우에 따라서 해당 객체의 멤버 한수가 아니여도 private 멤버에 접근해야만 할 경우가 생김 💥 이럴때마다 매번 새로운 public 함수를 작성하는건 비효율적 따라서 friend라는 새로운 접근 제어 키워드를 제공해 🌟 지정한 대상에 한해 해당 객체의 모든 멤버에 접근할 수 있는 권한을 부여해줌 ➡ 전역함수, 클래스, 멤버 함수의 세 가지 형태로 사용가능 b. 프렌드 함수 선언 HTML 삽입 미리보기할 수 없는 소스 friend 클래스이름 함수이름(매개변수목록); 위 프렌드 함수는 클래스 선언부에 원형이 포함되지만, 클래스의 멤버 함수는 ❌ but..

C++ 연산자 오버로딩

A. 연산자 오버로딩 (operator overloading) 1. 연산자 오버로딩 기초 a. 연산자 오버로딩이란? 함수 오버로딩 개념을 확대해 연산자에 대해서도 오버로딩을 제공 연산자 오버로딩을 사용자 정의 타입까지 확장할수도 있음 👉 클래스도 하나의 타입임을 확실히 보여줌 b. 연산자 함수(operator function) 연산자를 오버로딩하기 위해서 연산자 함수(operator function)라는 것을 사용 operator 키워드를 사용하여 연산자를 오버로딩 오버로딩할 연산자는 적법한 C++ 연산자여야 하고, operator 키워드와 공백 없이 연결되어 표시해야 함 HTML 삽입 미리보기할 수 없는 소스 operator오버로딩할연산자(매개변수목록) 연산자 함수의 장점은 복잡한 함수 이름 대신에 간..

[자료형(data type)] C++ 파생형 클래스 2 : 생성자와 소멸자 (+39강, 41강)

B. 생성자 1. 생성자의 기초 a. 멤버 변수의 초기화 클래스를 가지고 객체를 생성하면, 해당 객체는 메모리에 즉시 생성되지만 초기화 하기 전까진 사용할 수 없음 객체 멤버 변수는 private 멤버때문에 일반적인 방식으론 접근할 수 없어서 초기화를 위한 public 함수가 필요하고 이런 초기화 함수는 객체의 생성과 초기화 전까지 반드시 멤버의 초기화를 위해 호출 되어야 함 b. 생성자란? 🌟 객체의 생성과 동시에 멤버 변수를 초기화해주는 멤버 함수 객체 멤버의 초기화뿐만 아니라, 객체를 사용하기 위한 외부 환경까지도 초기화하는 역할 c. 생성자의 특징 초기화를 위한 데이터를 인수로 전달받음 생성자는 반환값이 없지만, void 형으로 선언 ❌ 초기화하는 방법이 여러개일 경우, 오버로딩 규칙에 따라 여러..

[자료형(data type)] C++ 파생형 클래스 1 : 클래스의 기본

A. 클래스 1. 클래스의 개념 a. 클래스란? 🌟 구조체의 상위 호환, 객체를 만들어 내기 위한 틀 구조체는 멤버로 함수를 포함할 수 있기에, C언어의 구조체보다 좀 더 확장된 의미 구조체와 클래스의 차이는 기본 접근 제어의 차이, 나머지는 거의 같음 C++은 클래스를 가지고 객체 지향 프로그램을 작성함 👉 따라서 구조체는 데이터 관리, 클래스는 객체관리 용도로 사용 클래스의 멤버 변수를 프로퍼티, 멤버 함수를 메소드라고 함 b. 객체 지향 프로그래밍 OOP OOP에선 모든 데이터를 객체(object)로 취급하며, 객체가 바로 프로그래밍의 중심 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍 객체를 만들어 내기 위한 틀과 같은 개념이 바로 클..

C++ 범위 : C++ 네임스페이스

B. 네임스페이스 1. 네임스페이스 기초 a. 네임스페이스(namespace)란? 🌟 내부 식별자에 사용될 수 있는 유효 범위를 제공하는 선언적 영역을 의미 b. 네임 스페이스가 필요한 이유 C++에서는 자료형을 구분하기 위한 다양한 내부 식별자를 가지고 있는데 프로그램이 복잡해지고 여러 라이브러리가 포함될수록 내부 식별자 간에 충돌할 가능성도 커짐 👉 따라서 이름 충돌 문제를 네임 스페이스로 해결함 c. 전역 네임스페이스(global namespace) 전역 네임스페이스라고 하는 파일 수준의 선언 영역이 존재 일반적으로 식별자의 네임스페이스가 명시되지 않으면, 전역 네임스페이스로 자동 포함 또한, C++ 표준 라이브러리 타입과 함수들은 std 네임스페이스 또는 그 속에 중첩된 네임스페이스에 선언되어 있..

C++ 범위 : 유효범위와 연결

A. 유효범위와 연결 1. 변수와 유효 범위 a. 유효 범위(scope) 🌟 하나의 변환 단위(translation unit) 내에서 해당 변수가 사용될 수 있는 범위 함수 내에서 선언된 변수는 함수 내에서만 사용 밖에서 선언된 변수는 선언된 이후에 나오는 함수에서 모두 사용 가능 💙 Info C++에서는 파일(file) 용어 대신 변환 단위(translation unit)라는 용어를 사용 b. 연결(linkage) 🌟 해당 변수를 사용할 수 있는 파일의 접근 가능 여부 함수 내에서 선언된 변수는 함수 밖에서는 사용할 수 없으므로 연결 ❌ 외부 연결(external linkage)을 가지는 변수 : 여러 파일에서 사용 내부 연결(internal linkage)을 가지는 변수 : 하나의 파일에서만 사용 2..

[자료형(data type)] C++ 파생형 공용체와 열거체 총정리

A. 공용체와 열거체 1. 공용체 a. 공용체란? 🌟 구조체와 거의 동일하지만 모든 멤버 변수가 하나의 메모리 공간을 공유 union 키워드를 사용하여 선언 순서가 규칙적이지 않고, 미리 알 수 없는 다양한 타입의 데이터를 저장할 수 있도록 설계된 타입 모든 멤버 변수가 같은 메모리를 공유(메모리 절약)해 한 번에 하나의 멤버 변수밖에 사용할 수 없음 b. 공용체의 메모리 할당 멤버 변수가 같은 메모리 위치를 공유해 마지막 값만 유효함 (나머지는 덮어쓰임) 크기가 가장 큰 멤버 변수의 크기로 메모리를 할당받음 👉 따라서 공용체 배열을 사용하면, 같은 크기로 구성된 배열 요소에 다양한 크기의 데이터를 저장할 수 있음 🎨 도식화 HTML 삽입 미리보기할 수 없는 소스 #include using namespa..

[자료형(data type)] C++ 파생형 구조체 총정리

A. 구조체 1. 구조체의 기본 a. 구조체란? 🌟 사용자가 C++언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입 = 사용자 정의 자료형이라고 부름 배열이 같은 타입의 변수 집합이라면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것 👉 이때 구조체를 구성하는 변수(함수)를 구조체의 맴버 또는 맴버변수라고 함 타입일 뿐만 아니라, 클래스의 기초가 됨 b. 구조체의 특징 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있음 또한 함수 리턴값으로 구조체를 사용하면 여러 개의 데이터를 한 번에 반환할 수 있음 (함수는 원래 하나의 값만 가능) c. 구조체의 정의와 선언 HTML 삽입 미리보기할 수 없는 소스 struct 구조체이름//struct 키워드 : 구조체의..

[프로그래밍 입문 올인원] 객체지향 : 블루프린트 실습 4 (34강)

A. 블루프린트 실습 4. 블루프린트 객체지향 a. 폴더 생성하기 b. 객체 생성하기 👉 Actor / Pawn 차이점 : Pawn은 내가 조종할 수 있음 유니티는 아무것도 없는 객체에 컴포넌트를 붙여 만드는 개념 언리얼은 기본적으로 구조가 다 잡혀있고 필요한건 상속받아 사용하는 개념 Viewport는 실제 게임화면을 의미함 이 공간에서 코드를 만들어주면 됨 c. 객체 설정하기 d. 객체 불러오기 위에서 생성한 객체를 불러오기 메인함수처럼 활용할 수 있는 공간 e. 객체 복제하기 상속받은 객체(child)라면 이렇게 부모로부터 상속받은 함수를 edit 해줘야 함 복제된 객체이니만큼 부모 객체를 먼저 호출하는데 f. 인터페이스 출처 : https://www.inflearn.com/course/%EA%B2%..

[게임 프로그래머 입문 올인원] 객체지향 : static과 싱글톤 (33강)

E. static 키워드 1. static의 기초 a. static이란? 🌟 변수와 함수의 범위, 수명 및 접근 방법을 변경하는 데 사용하는 키워드 2. static의 종류와 관계 a. 정적 변수(Static Variables) 🌟 함수 내부에서 선언된 지역 변수를 "정적 변수"로 만듦 변수는 프로그램이 처음 실행될 때 한 번 초기화되어 여러번 호출되어도 초기화 되지 않음 정적 변수는 함수의 범위를 벗어나도 값이 유지됨 HTML 삽입 미리보기할 수 없는 소스 void countCalls() { static int counter = 0; // 정적 변수 counter++; cout HTML 삽입 미리보기할 수 없는 소스 class MyClass { public: static int count; // 정적 ..