728x90
반응형

C++ 15

15. Constructor & Destructor (1)

1. Constructor & Desturctor 생성자 (Constructor)는 특별한 멤버함수이다 생성자는 객체 생성시 호출되고 초기화에 유용하게 사용된다 생성자 이름은 클래스 이름과 같다 ex) Player 클래스의 생성자는 Player(), Player(int 32 Test)... 등등 생성자는 반환형은 없고 매개변수는 존재할 수 있으며 오버로딩 할 수 있다 (클래스는 오버로딩을 통해 많은 생성자를 가질 수 있다, 이 많은 생성자들은 각각 Unique해야 한다 (객체 생성시 어떤 생성자를 호출해야 할 지 알아야 하기 때문이다, 모호성을 가진다면 컴파일 에러가 발생한다) 소멸자는 (Destructor)는 특별한 멤버함수이다 소멸자 이름은 클래스 이름과 같고 앞에 ~이 붙는다 ex) ~Player(..

C++ 2024.04.03

14. OOP Class & Object (1)

1. OOP OOP란 Object Oriented Programming으로 객체 지향 프로그래밍을 의미한다 절차 지향 프로그래밍 (Procedural Programming)은 함수를 중심으로 프로그래밍 하는 방식이다 따라서 함수들의 집합이라고 볼 수 있다 절차 지향 프로그래밍에서 데이터는 함수에서 분리되어 선언되고 데이터를 함수에서 사용해야 하면 해당 함수로 데이터를 전달해서 사용한다 절차 지향 프로그래밍의 한계점은 함수가 데이터의 구조에 대해 알아야 한다는 점이다 -> 데이터 구조가 변경되면 이 데이터를 사용하는 함수들도 전부 다 변경되어야 한다 (추후에 프로그램이 커지면 복잡해짐) 프로그램의 크기가 커질수록 절차 지향 프로그래밍의 한계점은 더욱 드러나게 되는데 프로그램이 커질수록 절차 지향 프로그램은..

C++ 2024.02.22

13. Pointer And Reference (2)

1. Pointer Arithmetic 포인터는 대입, 비교, 산술 연산이 가능하다 포인터에서 ++,--연산은 해당 주소 다음,이전을 가리킨다 (포인터 변수의 타입 크기만큼 증가,감소한다) ex) int형 포인터 변수의 주소가 1000이고 해당 포인터 변수를 ++. --하면 1004, 996이 된다 일반 변수와 마찬가지로 포인터변수++, 포인터변수--로 사용이 가능하다 이때 *포인터변수++은 주소를 ++하는것이고 (*포인터변수)++은 주소를 타고간 데이터 값을 ++하는것이다 포인터 변수는 덧셈 뺄셈도 가능하며 +=, -=도 사용할 수 있다 마찬가지로 포인터 변수의 타입 크기만큼 증가, 감소된다 포인터 변수와 포인터 변수의 뺄셈은 두 주소 사이의 거리를 계산한다 이때 타입이 다르면 컴파일 에러가 발생한다 ..

C++ 2024.02.14

12. Pointer And Reference, Memory Allocate (1)

1. What is a Pointer? 포인터 타입 변수는 다른 변수의 메모리 주소를 저장한다 포인터는 주소 전달 방식으로서 함수의 매개변수에 사용되고 배열에 아주 효과적으로 사용되며 힙 영역에 메모리를 동적으로 할당할 때 사용한다 또한 임베디드 시스템에서 특정 메모리 주소 액세스 권한이 필요할 때 사용된다 타입* 변수명;으로 포인터 변수를 선언할 수 있다 이때 *는 수학적의미가 아닌 포인터 변수를 의미한다 포인터 변수도 일반 변수와 마찬가지로 초기화 하지 않으면 쓰레기값(Garbage Data)이 들어가게 된다 꼭 사용하기 전에 초기화를 하고 사용해야 한다 포인터 변수의 쓰레기값은 결국 주소이다 만약 이 주소가 프로그래머가 알지 못하는 유효한 곳이라면 접근 시 상당히 위험한 결과를 나타낼 수 있다 포인..

C++ 2024.01.30

11. Function (2)

1. Passing Arrays to Function 함수의 인자로 배열을 넘길 수 있다 반환형 함수이름(타입 배열이름[]);로 함수를 선언하고 호출 시 인자로 배열 이름을 넣어준다 함수이름(배열이름); 배열의 이름은 배열 0번째 index의 주소 (배열의 시작주소)를 의미한다 따라서 인자로 배열을 넘기게 되면 기존의 일반 value를 인자로 넘길때와 달리 사본이 전달되지 않고 배열의 시작 주소가 전달되게 된다 따라서 배열을 인자로 넘기게 되면 함수 내부에서 원본 수정이 가능하기 때문에 조심해야 한다 이때 const를 매개변수 앞에 선언해주면 원본 수정이 불가능한 rodata가 된다 인자로 배열의 이름 (배열의 시작주소)를 넘기기 때문에 함수는 배열의 크기를 알 수 없다 따라서 배열의 크기도 같이 전달해..

C++ 2024.01.26

10. Function (1)

1. What is Function? C++개발을 할 때는 C++ STL의 함수나 클래스, Third-party Library (Unity, Unreal, Cocos2D 등), 직접 만든 함수나 클래스를 사용하여 개발을 한다 함수를 사용하여 기능들을 모듈화 하고 여러 부분에 동일한 기능을 사용해야 할 때 사용하며 이를 통해 크고 복잡한 프로젝트를 관리하기 쉽게 개발 할 수 있다 (디버깅, 가독성 등에 좋다) 함수는 추상화 하는것이 중요하다, 함수 내부의 코드가 어떻게 돌아가는지 상관없이 함수 호출시 함수 이름 의미 그대로 실행되어야 한다 #include #include //standart library 함수를 사용하기 위한 헤더파일 #include //C++에서 수학관련 함수를 사용하기 위한 헤더파일 #..

C++ 2024.01.25

9. Character & String

1. Character Functions #include //문자의 종류를 T/F로 판단하는 함수 및 소문자 대문자로 변경해주는 함수를 제공한다 (c-style character based functions) int main() { char c = 'A'; isalpha(c); //c가 문자이면 true isalnum(c); //c가 문자거나 숫자이면 true isdigit(c); //c가 숫자면 true islower(c); //c가 소문자면 true isprint(c); //c가 print가능한 문자면 true ispunct(c); //c가 쉼표(,) 마침표(.) 등의 문장기호면 true isupper(c); //c가 대문자면 true isspace(c); //c가 space면 true tolower..

C++ 2024.01.08

8. Control Program Flow (2)

1. Conditional Operator (조건부 연산자) 조건식이 참이면 ? 뒤의 명령을 실행하고 거짓이면 : 뒤의 명령을 실행한다 한줄로 if-else문 처리를 할 수 있다 (조건식) ? 명령1 : 명령2 int main() { int a{ 10 }; int b{ 20 }; int result{ 0 }; result = (a > b) ? a : b; //a가 b보다 크면 a, a 가 b보다 작으면 b를 result에 할당 result = (a < b) ? (b - a) : (a - b); //a가 b보다 작으면 b-a, a가 b보다 크면 a-b 처리 cout

C++ 2023.12.21

6. Operators (연산자)

1. Assignment Operator (대입 연산자) C++의 연산자는 대부분 binary operator이다 (2개의 피 연산자로 연산하는 연산자), unary operator는 1개의 피연산자로 연산하는 연산자이다, ternary operator는 3개의 피연산자로 연산하는 연산자이다 대입연산자(assignment)는 객체에 값을 대입해 값을 수정/대입하는 연산자이다 (값에는 literal값뿐 아니라 객체(변수), 긴 수학식도 가능하다) 대입연산자는 =으로 사용한다 (equal의 의미가 아님), 오른쪽의 값을 왼쪽의 변수로 대입한다는 의미이다 (타입이 맞지 않으면 컴파일에러 발생) (값을 변수의 메모리 위치에 저장하는 개념이다) const변수는 대입연산자로 값을 대입할 수 없다 (const(상수)..

C++ 2023.12.12
728x90
반응형