참조자 7

다형성 (3) - 기본 클래스 포인터 & 참조자

Base Class Pointer◆ 기본 클래스의 포인터◆ C++에서 런타임 다형성의 구현을 위해 3가지 조건이 필요하다. ● 상속 ● 기본 클래스 포인터 또는 참조자 ● 가상 함수동적 바인딩을 하기 위해서 3가지의 조건이 필요하며 저번 강의에서 가상함수를 배웠고, 저번 파트부터 강의 주제가 상속인 만큼 계속 상속에 대해 배우고 있다.마지막으로 기본 클래스 포인터 또는 참조자 까지 사용하게 되면 동적 바인딩을 할 수 있다. ◆ 기본 클래스의 포인터 사용 예시 Entity* p1 = new Entity{ 0,0 }; Entity* p2 = new Player{ 0,0,2 }; Entity* p3 = new Enemy{ 0,0,2 }; Entity* p4 = new Boss{ 0,0,..

C++/C++ : Study 2025.05.01

C++ 포인터 참조자 (7) 포인터 vs 참조자

Pointer vs References 중요한 Part이다.★★★★★◆  간단 정리  ● *의 사용       ☞ 변수를 정의할 때 붙는다? => 포인터의 정의 ( 포인터 변수의 생성 ) int* a        ☞ 변수를 사용할 때 붙는다? => 포인터의 역참조 *a  ● &의 사용       ☞ 변수를 정의할 때 붙는다? => 참조자의 정의 ( 참조자의 생성 ) int& b        ☞ 변수를 사용할 때 붙는다? => 변수의 주소값 반환 &a#include using namespace std;int add(int, int&);int main(){ int age; cin >> age; int& c = age; add(age, c); cout 개념이 이해가 안 간다면 직접 타이핑해서 기억할 것Poin..

C++/C++ : Study 2024.09.25

C++ 포인터 참조자 (6) 참조자

참조자란 C++에 특화되어 있는 내용으로 포인터와 비슷하다.(Summary) References◆  참조자란?◆  l-value와 v-value◆  포인터 vs  참조자 References중요한 Part 이다. ★★★★★◆  참조자  ●  변수의 별명  ●  참조자는 (새로운) 변수가 아님  ●  선언과 동시에 초기화되어야 함 (Null 일 수 없음)  ●  한 번 초기화되면, 다른 변수의 참조자가 될 수 없음  ●   Const pointer 이면서, 사용 시 자동으로 역참조를 수행하는 개념        ☞ 포인터의 간단하고 편리한 버전으로 생각  ●  함수의 매개변수로 자주 사용◆  참조자  ●  int & , float&  등 변수 정의 시에 &를 붙인 타입을 사용한다  ●  포인터와 마찬가지로, ..

C++/C++ : Study 2024.09.22

c++ 포인터 참조자 (1) 개요

Today Study◆  포인터◆  참조자(Summary) Pointers◆  포인터 개요◆  포인터의 정의◆  주소로의 접근◆  역참조◆  동적 메모리 할당◆  포인터와 배열◆  포인터와 const◆  포인터의 pass-by-address◆  주의사항Pointersstack 메모리는 자동으로 정리(해제) 된다.함수가 끝나면 함수 구분선과 지역변수의 메모리가 해제된다.Heap 메모리는 직접 해제해주어야 한다.우측에 있는 스택메모리는 1 byte가 아니라만일 지역 변수가 int 일 경우 4byte로 걸쳐서 데이터가 저장되는 것이다.각 칸의 주소는 따로 따로 있으나 우측 하단에 주소값을 기입하였다. int x 는 stack 메모리 4칸 중 첫번째 칸이 예를 들어 0x1000이라는 주소값을 가지고 있다면두번째..

C++/C++ : Study 2024.09.22

C++ 포인터 참조자 (5) 포인터의 전달과 반환

Passing Points to a Function중요한 Part이다.★★★★★◆  포인터를 함수의 인자로 전달●  Pass-by-address / 변수의 주소를 전달#include using namespace std;void double_data(int*);int main(){ int value = 10; cout void double_data(int* int_ptr)에서 *int_ptr *= 2; 를 선언하게 되면int value의 값이 10에서 2배를 곱한 20으로 변한다.그리고 함수가 끝나면 메모리 값은 해제된다.함수 선언이 끝나서 메모리 할당이 해지되어도 그전에 있는 메모리 값은 그대로 둔다.원상복구는 따로 하지 않는다.※ 주소를 가지고 있기에 호출 Stack 밖의 값도 바꿀 수 있다.(그렇기에..

C++/C++ : Study 2024.09.22

C++ 포인터 참조자 (4) 배열과 포인터, Const

포인터 배열 배열처럼 나란히 선언하기에역참조 안 하고 배열 호출 그대로 사용할 수 있다.그럼 배열과 포인터의 차이점을 알아보자.Arrays and Pointers●  배열의 이름은 배열의 첫 요소의 주소를 가리킨다. (remind)●   포인터 변수의 값은 주소값이다.●  포인터 변수와 배열이 같은 주소를 가리킨다면, 포인터 변수와 배열은 (거의) 동일하게 사용 가능하다.        ☞ (차이점 : 배열은 주소값을 정의 이후 변경 불가. Sizeof() 반환값이 다름) int scores[] = { 100,95,90 }; cout 여기서 말하는 배열은 정적 배열을 말한다.int main(){ int arr[] = { 1,2,3 }; cout 이렇게 작성할 경우 콘솔 값은 000000D7B21FF7D8..

C++/C++ : Study 2024.09.21

C++ 포인터 참조자 (3) 동적 할당

Dynamic Memory Allocation중요한 Part이다.★★★★★◆  동적 메모리 할당  ●  런타임에 힙 메모리를 할당        ☞  프로그램의 실행 도중 얼마나 많은 메모리가 필요한지 미리 알 수 없는 경우 사용한다.              ▶ 사용자 입력에 따라 크기가 바뀌는 경우              ▶ 파일을 선택하여 내용을 읽어오는 경우 등        ☞  큰 데이터를 저장해야 할 경우 (Stack 은 크기가 작음, 몇 MB 정도이다.)        ☞  객체의 생애주기(언제 메모리가 할당되고, 해제되어야 할지)를 직접 제어해야 할 경우               (스택에서는 함수가 선언을 마치면 자동으로 해제된다.)   ●  힙 메모리는 스택과는 달리 스스로 해제되지 않음!  ..

C++/C++ : Study 2024.09.18