C++ Show 객체 포인터와 동적 메모리 할당 및 반환, this포인터객체 포인터와 동적 메모리 할당 및 반환, this포인터에 대해서 작성하겠습니다. 객체 포인터는 객체의 멤버 변수를 읽고 값을 쓰거나 멤버 함수를 호출 가능합니다. 첫 번째 빨간 박스를 보시면 클래스를 생성하고 포인터변수로 선언합니다. 그리고 위에서 선언한 객체의 주소를 포인터p가 가리키도록 합니다. 그리고 그 클래스에 안의 멤버함수에 대한 접근은 두 번째 빨간 박스와 같이 두가지 방법이 있는데 ->는 포인터로 접근하는 방법이고 .은 객체이름으로 멤버를 접근하는 방법입니다. 객체 배열입니다. 선언하는 방식은 첫 번째 박스처럼 선언하시면 됩니다. 그리고 일반 배열처럼 인덱스로 그 클래스의 멤버함수에 대해 접근이 가능합니다. 그리고 객체 배열 선언문은 기본생성자를 호출합니다. [3]으로 생성하면 3개의 객체를 생성하고 객체마다 기본 생성자를 호출합니다. 네 번째 빨간 박스를 보시면 클래스를 포인터로 선언하고 포인터가 배열을 가리키도록 합니다. 그리고 for문안을 보시면 마지막 줄에 p++가 있는데 이것은 다음 객체 주소로 갈수 있도록 증가를 시켜주는 역할을 합니다. 함수가 종료하면 선언된 배열도 소멸됩니다. 또 모든 원소객체도 소멸됩니다. 그리고 객체마다 소멸자를 호출하게 됩니다. C++에서 동적 메모리 할당 및 반환에는 두가지 연산자가 존재합니다. new연산자와 delete연산자가 있습니다. new연산자는 데이터 크기만큼 메모리를 할당 받습니다. 그리고 주소를 리턴합니다. ex)를 보시면 int *pint = new int 는 정수형 타입으로 할당을 받겠다는 의미를 가집니다. delete연산자는 할당받은 메모리를 반환시켜주는 역할을 합니다. ex)에서 delete pint 는 정수형 타입으로 할당받은 메모리를 모두 반환시켜준다는 의미를 가지고 있습니다. 위와 같은 예시처럼 쓰게 됩니다. 정수형 타입으로 할당을 받고 포인터p에 5를 넣습니다. 그리고 새로운 변수 n에 포인터p의 값을 넣습니다. this포인터는 객체 자신에 대한 포인터이고 클래스의 멤버 함수 내에서만 사용가능합니다. 그리고 this포인터를 써야하는 경우가 2가지가 있는데 첫 번째는 이와 같이 멤버 변수와 매개 변수의 이름이 동일할때 씁니다. 그 이유는 radius라는 변수가 모두 매개변수를 지칭하게 되어 멤버 변수에 값을 쓰는 목적이 왜곡됩니다. 그래서 this로 멤버 변수와 매개 변수를 구분해줍니다. 두 번째는 객체의 멤버함수에서 객체 자신의 주솔르 리턴 할 때 입니다, 연산자 중복에서 많이 쓰이는 경우입니다. this포인터에는 제약조건이 있는데 멤버 함수에서만 작성을 해야합니다. 그리고 멤버 함수여도 정적 멤버 함수에서는 사용 불가합니다. 그 이유는 정적 멤버 함수는 객체가 생성되기전에 호출될 수 있다. 그래서 정적 멤버함수가 실행되는 시점에서 현재 객체라는 것은 존재하지 않게 되기 때문입니다. 앞서 'C++기본 프로그램의 기본 요소와 화면 출력'에서 설명했듯이 string클래스를 이용한 문자열 사용입니다. str은 아무것도 초기화하지 않았기 때문에 빈 문자열이 출력이 되고 adress는 괄호안에 초기화된 문자열을 출력해줍니다. copyAdress는 adress의 변수안에 있는 문자열을 복사해서 출력하는 역할을 합니다.
이 기사에서는 C++의 함수에서 포인터를 반환하는 방법에 대한 몇 가지 방법을 설명합니다. std::string::data함수를 사용하여 C++의 함수에서 포인터 반환함수 반환 유형은 일반적으로 값, 참조 또는 포인터의 세 가지 범주로 나뉩니다. 그들 모두는 최적의 사용 사례를 가지고 있습니다. 다음 예제 코드에서는
출력:
&variable 주소 연산자을 사용하여 C++의 함수에서 포인터 반환연산자의
출력:
또는 배열이 함수 블록에서 참조되는 변수 이름 만 사용하여 이전 코드를 다시 작성할 수 있습니다. 함수가
출력: |