C++_9주차_정리

728x90

[객체 포인터]

:객체 전용 포인터 변수가 있다.

클래스이름 *객체포인터_변수이름;

 

NewClass Object(10); //멤버변수를 10으로 초기화하며 객체 선언 동시에 생성

NewClass *ptr_Object; //객체 포인터 선언

ptr_Objext = &Object; //지칭할 객체의 주소를 객체 포인터에 넣어줌

 

-객체에서 자신의 멤버변수나 멤버함수에 접근할 때는 도트 연산자(.) 를 사용한다.

객체.멤버변수

객체.멤버함수

-객체 포인터에서 자신의 멤버변수나 멤버함수에 접근할 때는 ( -> 연산자)를 사용한다.

객체포인터 -> 멤버변수

객체포인터 -> 멤버함수

int main() {
	Television SStv;
	Television LGtv(40, 10, 0);
	
	Television *ptr_SStv; //객체 포인터 선언 (SStv 지칭)

	//일반 객체를 출력 (.)도트 연산자로 멤버 접근 
	cout << "SStv: " << endl;
	cout << "Inch = " << SStv.GetInch()
		<< ", Channel = " << SStv.GetChannel()
		<< ", Volume = " << SStv.GetVolume() << endl << endl;
	 
	//객체를 지칭하는 포인터로 출력 ->연산자로 멤버 접근 
	ptr_SStv = &SStv;
	cout << "SStv: " << endl;
	cout << "Inch = " << ptr_SStv->GetInch()
		<< ", Channel = " << ptr_SStv->GetChannel()
		<< ", Volume = " << ptr_SStv-> GetVolume() << endl << endl;

	
	getchar();
	getchar();
	return 0;
}

 

[객체 Swap 하기]

-> 객체포인터를 사용하여 swap

//9주차 수업-객체 swap 하기-(객체 포인터 이용하기) 
...
void F_SwapTwoObjectsByAddress(Television *x, Television *y) { //객체 swap 함수(주소 받기)
	Television z; //temp용 객체 선언 
	Television* ptr_z; //객체 포인터 선언 

	ptr_z = &z;//해당 객체 주소를 객체 포인터에 주기 

	*ptr_z = *x;
	*x = *y;
	*y = *ptr_z;
}

int main() {
	Television SStv;
	Television LGtv(40, 10, 0);
	Television SKtv;

	F_SwapTwoObjectsByAddress(&SStv, &LGtv); //swap을 위해 객체의 주소를 인수로 전달

	//함수 호출되어 반환된 이후  SStv <-> LGtv swap된 상황 
	//출력 시 두 객체 값 바뀜
	
	getchar();
	getchar();
	return 0;
}

 

[객체 배열]

:객체를 원소로 가지는 배열을 객체 배열이라고 함 (배열의 각 요소 = 객체)

클래스이름 객체배열이름 [크기]; //선언

...
int main() {
	//객체 배열 
	Television Television_Array[3] = {
		Television(15, 16, 17),
		Television(25, 26, 27),
		Television(35, 36, 37)
	};

	for (int i = 0; i <= 2; i++) { 
		cout << "Television_Array[ " << i << "] : "
			<< "Inch = " << Television_Array[i].GetInch()
			<< ", Channel = " << Television_Array[i].GetChannel()
			<< ", Volume = " << Television_Array[i].GetVolume() << endl;
	}

	getchar();
	getchar();
	return 0;
}
 

[정적 변수] static

: 해당 클래스로부터 생성된 모든 객체가 공유 가능한 정적 변수

: 클래스 안에서 사용하는 전역 변수라고 생각하면 된다.

 

-정적 변수의 초기화

int Circle::count = 0; //클래스 외부에서 이 형태로 초기화한다.

 

728x90

'C++, C언어 > [문법]_C++' 카테고리의 다른 글

C++_11주차_정리  (0) 2021.12.20
C++_10주차_정리  (0) 2021.12.20
C++_8주차_정리  (0) 2021.12.20
C++_7주차_정리  (0) 2021.12.20
C++_6주차_정리  (0) 2021.12.20