[C++] 용어정리: 객체, 멤버변수, 멤버함수 클래스나 구조체를 선언할때 변수라는 말을 사용하기에는 뭔가 어울리지 않는다는 느낌이 든다. 왜냐하면 그 안에는 여러가지 변수 선언들과 함수들이 있기 때문에 변수라는 단어와는 맞지 않다. 사실 이들을 부르는 다른 이름이 있다. 바로 객체 (Object) 이다. 이와 관련해서 클래스와 관련있는 용어를 정리해 보겠다. 맴버 변수 클래스 내부에 선언된 변수 맴버 함수 클래스 내부에 선언된 함수 c++/클래스의 기본 2022.12.30
[C++] 클래스(Class) 이 전 포스팅에서 구조체에 대해서 이야기했다. 클래스와 구조체는 매우 유사한 생김새를 가지고 있다. 이 둘의 차이점은 선언 방식이다. Class class Vehicle { char key_ID[20]; int fuelGuage; int curSpeed; void Accel() { fuelGuage--; curSpeed++; } }; struct struct Car { char key_ID[20]; int fuelGuage; int curSpeed; void Accel() { fuelGuage--; curSpeed++; } }; struct에서 class로 바뀌었다는 것이 유일한 차이이다. 하지만 구조체에서 클래스로 변경이 되면서 다음이 불가하다 int main() { Car mycar = { "My c.. c++/클래스의 기본 2022.12.30
[C++] 구조체 사용 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치. 이 전에 BankSystem 프로젝트를 만들어보면서 클래스와 구조체에 대해서 어설플게 알고 작업을 하다 보니 몇 가지 실수를 했다. #include using namespace std; struct Car { char gameID[100]; int fuelGauge = 100; int curSpeed = 30; }; void Accel(Car &car) { car.fuelGauge -= 10; car.curSpeed += 10; cout c++/클래스의 기본 2022.12.30
[C++] 키워드 const의 의미 다음 물음을 설명해보자 const int num = 10; const int *ptr1 = &val1; int *const ptr2 = &val2; const int* const ptr3 = &val3; 1. cosnt int num = 10 = > 변수 num을 상수화 한다는 것이다. 다른 값으로 변경이 불가 2. const int * ptr1 = &val1; = > 포인터 ptr1 을 이용해서 &val1의 값을 변경할 수 없음을 의미한다. 3. int *const ptr2 = &val2; = > 포인터 ptr2가 상수화 됨. 4. const int *const ptr3 = &val3; = > ptr3를 상수 포인터로 선언을 하고 ptr3 를 사용해서 &val3의 값을 변경할 수 없다. c++/c 언어 기반의 c++ 2 2022.12.29
[C++] 참조자와 함수(Call by Reference), const 참조자 함수의 호출 방식에는 두 가지가 있다. Call - by - value 값을 인자로 전달하는 함수의 호출방식 Call - by - refence 주소값을 인자로 전달하는 함수의 호출방식 Call - by - value에 대해서는 딱히 이야기할 게 없기 때문에 Call - by - refence 에 대해서 이야기하겠습니다. 흔히 참조에 의한 호출에 대해서 이야기할 때 Swap 함수를 예로 들곤 한다. void SwapRef(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int main() { int a = 10; int b = 5; cout c++/c 언어 기반의 c++ 2 2022.12.29
[C++] & 참조자 (Reference)의 이해 C++의 '참조자'는 기능상 포인터와 비슷해 보이기 쉽다. 그러나 참조자는 포인터를 모르는 사람도 이해할 수 있는 개념이다. 참조자의 이해 변수의 정의를 살펴보자. 수는 할당된 메모리 공간에 붙여진 이름이다. 그리고 그 이름을 통해서 해당 메모리 공간에 접근이 가능하다. 예를 들어보자 int a = 10; 이라는 문장에서 과연 a 가 의미하는게 무엇일까 두 가지로 볼 수 있다. 1. 숫자 10 을 저장한 값 2. int형 크기의 데이터를 저장할 수 있는 주소값의 닉네임. 첫 번쨰 관점은 쉽게 이해가 간다. 왜냐하면 직관적으로 a 라는 값에 10 이라는 수를 대입 한다고 생각하면 이해가 된다. 하지만 두 번째 개념은 이해하기가 다소 쉽지 않을 수 있다. 물론 설명이 부족해서 일 수도 있다. 두 번째 개념을.. c++/c 언어 기반의 c++ 2 2022.12.29
01-06 [C++] OOP 프로젝트 Bank Account 언리얼을 좀 더 심도있게 사용 위해 C++를 다시 공부하는 김에 언리얼 C++ 스타일로 프로그래밍을 해보았다. 우선 필요한 클래스, 함수, 변수를 담고 있는 헤더 파일이다. #pragma once class UserInforamtion { public: int money;// 고객 금액 unsigned int account_id;// 고객 아이디 -> 고객 식별을 위해 사용 char client_name[50];// 고객 이름 저장 public: UserInforamtion();// 생성자 -> 데이터 초기화 근데 지금은 없어도 될 듯 void MakeAccount(UserInforamtion *user,int size);// 계좌계설 void Deposit(UserInforamtion* user,int.. c++/c 언어 기반의 c++ 1 2022.12.28
01-05 [C++] 이름공간 (namespace) 이해하기 namespace 가 필요한 이유 여럿이서 작업을 할때 서로 사용자 정의 명칭이 같을 경우가 있다. 이럴경우 컴파일 에러가 발생하게 된는데, 이런 경우를 방지하기 위해서 이름공간이라는 키워드가 생기게 되었다. 예시를 보면 이해가 더 잘 된다. #include using namespace std; void MyFunc() { cout c++/c 언어 기반의 c++ 1 2022.12.28
01-04 [C++]인라인 (Inline) 함수 인라인 함수라는 것은 단어 뜻대로 보면 "프로그램 코드라인 안으로 들어간 함수" 라는 뜻이된다. 매크로 함수의 장점 일반적인 함수에 비해서 실행속도의 이점이 있다. 왜냐하면 컴파일 이전에 코드가 변환되되어 일반적인 함수가 가지는 호출 과정이 없기 때문에 속도면에서 이득을 보인다. 매크로 함수의 단점 정의하기가 어렵고, 복잡한 함수를 매크로의 형태로 정의하는데 한계가 있다. 매크로함수 기본 사용법 #include #define SQUARE(x) ((x)*(x)) using namespace std; int main() { cout c++/c 언어 기반의 c++ 1 2022.12.28
01-03 [C++] 매개변수의 디폴트 값 (Default Value) C++의 함수에는 '디폴트 값'이라는 것을 설정할 수 있다. 디폴트 값 이란 함수를 call 할 시 인자값을 전달하지 않아도 함수 선언시 매개변수의 값을 지정하여 전달 받는 것을 의미한다. #include using namespace std; int MyFuncOne(int num = 7) { return num + 1; } int MyFuncTwo(int num1 = 7,int num2 = 5) { return num1 + num2; } int main() { } 위 코드에서 MyFunccOne(); 를 메인에서 작성한다고 하면 MyFuncOne 함수는 인자값으로 값을 전달받지 않았더라도 자동으로 num = 7로 간주하고 값을 리턴한다. 함수의 원형을 별도로 선언하는 경우에는 선언 시에만 디폴트 값을 .. c++/c 언어 기반의 c++ 1 2022.12.27