목록C++ (46)
승쨩개발공부
virtual(가상) 실세계 에서 가상 -> 존재하지 않는 것을 존재하는 것처럼 느끼게 하는 것. 프로그래밍 에서 가상 -> 존재하는 것을 존재하지 않는 것처럼 느끼게 하는 것. 반환 타입 앞에 virtual 키워드를 명시하면 가상 함수가 된다. -> 존재하는 함수를 존재하지 않는 것처럼 만든다. 가상 함수를 통해 함수를 호출하면 함수를 없는 것처럼 만드는 것이기 때문에 호출해야할 함수가 사라진다. 이 경우, 같은 함수를 다시 만들어서 호출한다. Func함수는 virtual 키워드로 인해 가상 함수가 되었다. -> 호출할 시점에 없는 취급을 해라. -> 단, 없는 취급했더니 진짜로 호출할 함수가 없을 경우에는 다시 만들어서 호출한다. 부모 클래스의 가상 함수를 자식 클래스가 오버라이딩 할 경우 자식 클래..
오버라이딩 상속 관계에서 부모 클래스의 함수를 자식 클래스에 재정의하는 문법. -> 단, 반환 타입, 함수이름, 매개변수 정보가 모두 동일해야한다. 부모와 자식이 동일한 함수를 가지고 있고, 이를 호출할 경우 모호성이 발생해야 한다. 즉, 부모와 자식 둘 다 같은 이름의 함수를 가지고 있어야 된다. 단, 오버라이딩은 모호성이 발생하지 않는다. 오버라이딩 된 함수를 호출할 경우 실 객체 기준으로 판단하지 않고 객체 타입 기준으로 판단하여 함수를 호출한다. -> 객체 타입 기준의 함수가 앞으로 나오고, 실 객체의 함수가 뒤로 숨는다. CPlayer는 CObj를 상속 받고 있다. -> CObj의 CPlayer 클래스 내부에는 Func()함수가 있다. -> 당연히 모호성이 발생해야 하지만, 오버라이딩 문법이 적..
객체 포인터 객체의 주소를 저장하는 포인터이다. 상곡 관계에서 부모의 객체 타입 포인터 변수에는 자식 객체의 주소 또한 저장할 수 있다. -> 반대의 경우는 불가능하다. 단, 객체의 맴버에 접근할 떄는 객체 타입 기본으로 판단한다. pPlayer의 실 객체는 CPlayer 이지만 객체 타입이 CObj이기 떄문에 CObj가 가지고 있는 함수만 호출이 가능하다. 하지만 객체 타입이 CPlayer 이면 자식 클래스이기 떄문에 부모 클래스에 있는 함수까지 호출이 가능하다. -> 부모의 함수 또한 호출이 가능하다. 객체 타입을 자식 클래스로 하면 부모 클래스 동적 할당이 불가능하다. 자식 -> 부모는 참조가 가능 부모 -> 자식은 참조가 불가능 부모 클래스가 자식 클래스를 참조하는 방법으로는 다음에 설명할 가삼함..
상속 부모 클래스가 가진 것을 자식 클래스에게 물려주는 것. -> 연관 있는 클래스에게 물려주겠다. 부모 클래스가 자식 클래스에게 물려준다해도 부모 클래스가 가지고 있는 것은 잃지 않는다. -> 복사해서 물려준다. 상속을 구현할 떄 자식 클래스에서 어떤 부모 클래스를 상속 받을지 명시한다. class 자식클래스명 : 부모클래스명 상속의 조건 부모 클래스를 상속 받을 떄 어떤 조건으로 상속 받을지 설정할 수 있다. 조건(기본 접근 지정자)을 설정하지 않을 경우 기본 private 형태로 상속을 받는다. class A(부모) { public: void A_Func() { } }; class B(자식) : public A(부모) { public: void B_Func() { } } 상속 관계에서의 생성자와 소..
this 이것의 주소 -> this가 사용된 객체의 주소를 저장하고 있다. this를 사용하면 사용한 객체가 할당된 메모리 시작 주소를 보여준다. -> 다음과 같이 CObj의 객체를 통해서 확인을 해보면 주소가 같은 것을 확인할 수가 있다. class CObj { public: void Func() { cout
복사 생성자 생성자 : 객체 생성 시 객체를 받아온다 -> 인자로 넘어오는 객체의 맴버 값을 복사 받는 것. 디폴트 복사 생성자 사용자가 복사 생성자를 정의하지 않으면 컴파일러가 복사 생성자를 생성하여 호출한다. 사용자가 복사 생성자를 정의하면 컴파일러는 복사 생성자를 생성하지 않는다. 복사 생성자의 호출 시점 3가지 1. 먼저 생성한 객체를 나중에 생성하는 객체의 인자로 전달하는 경우 2. 함수의 인자로 객체가 전달되는 경우 3. 함수의 반환 값으로 객체가 반환되는 경우 복사 생성자의 인자로 레퍼런스 타입을 받는 이유 생성자는 함수의 일종이므로 호출하면 stack 영역이 할당된다. 생성자의 stack 영역에 지역 변수를 할당하고 인자로 넘겨주는 값을 복사 받을 떄 또 다시 복사 생성자를 호출해야 하는 ..