목록전체 글 (156)
승쨩개발공부
캐스팅? -> 형 변환 캐스팅 사용 방법 -> 캐스팅(데이터); 자료형 -> 어떤 자료형으로 형을 바꿀지 명시해준다. 데이터 -> 변환할 데이터 -> 어떤 데이터를 바꿀지 명시해준다. 1. static_cast -> 정적 캐스팅, 논리적인 캐스팅 -> 형 변환 시점이 컴파일 시점이기 떄문에 static 이라는 명칭이 붙는다. -> C스타일의 캐스팅과 비슷한 역활을 한다. 객체 포인터의 형 변환 Static_cast의 주의사항 1. C스타일 캐스팅은 어떤 형이든 상관 없이 모두 변환이 가능하다. 하지만 이런 경우엔 위험성이 발생할 수 있다. 2. 상속 관계 유무를 따지기 때문에 논리적인 캐스팅이라고 한다. 하지만 상속 관계만 따질 뿐 부모와 자식의 관계는 따지지 않기 떄문에, 잘못 사용하게 되면 또 다른 ..
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() { } } 상속 관계에서의 생성자와 소..