HelloWorld(const char* a) , const char* msg="Hello"
{ a="BYE"}
왜 수정이 안될까?
-> 다중포인터 사용하면 가능하다.
**PP -> PP[주소1] -> 8바이트 , 주소1[주소2] -> 주소2[] -> 1바이트 가방(const char)
const char **pp=&a
-> pp[&a], a[주소] -> 주소2[수정] -> *pp=BYE 이런식으로 수정 가능.
배열 -> 데이터의 묶음
포인터 -> 주소를 담는 가방
배열의 이름은 배열의 시작주소값을 가리키는 TYPE*포인터로 변환가능
[TYPE형 1차원 배열]과 [TYPE형 * 포인트]는 완전히 호환가능
int arr[2][2]={(1,2),(3,4)}
int **pp=arr -> 에러
만약 int **pp=(int **)arr -> 크래쉬가 남, 2차원 배열, 다중포인터는 호환이 안됨
-> pp[주소1] -> 주소1[주소2] -> 주소[] <- 이곳에 값이 안넣어진다.
int** pp=arr-> int(*pp)[2]=arr 이런식으로 정의해아한다.
객체지향.
절차지향 -> 함수가 메인
객체지향 -> 객체가 메인
객체 -> 모든 오브젝트
class Player
public:
멤버 함수->로직
public:
멤버 변수 -> 데이터
Player::FUNC -> 플레이어에 속해있는 함수
Player p -> Instantiate -> 객체 생성
객체를 여러개 만들어도 서로의 주소를 침범을 안한다 (다른 영역에 있기때문)
일반 함수 호출이나 멤버 함수 호출 -> 객체 본인의 주소를 넘겨준다. -> 멤버함수 내에서 자기 자신의 정보 수정가능
** 여담
언리얼엔진5에서 c++로 프로그래밍 하게 되면 액터,폰,캐릭터 등 특정 객체에 대한 c++ 파일을 만들면 헤더 파일과 cpp 파일을 생성한다.
각각의 오브젝트 마다 다르지만 공통적으로 cpp 파일에는 생성자는 공통적으로 만들어진다.
비주얼 스튜디오 c++ 코딩처럼 객체 생성이 따로 필요가 없다.
'c++' 카테고리의 다른 글
C++ 개인 필기(8) 객체지향 생성자 (0) | 2024.01.31 |
---|---|
C++ 개인 필기(7) 생성자 소멸자 (1) | 2024.01.26 |
C++ 개인 필기(5) 포인터 및 참조 (0) | 2024.01.24 |
C++ 개인 필기(4) 포인터 (0) | 2024.01.22 |
C++ 개인 필기(3) 반복문 및 스택 (0) | 2024.01.19 |