프로그래밍 공부

C++ 9

카테고리 설명
  • C++에서 다형성을 지원하기 위한 메커니즘 중 하나로, 가상함수들의 주소를 담고있는 테이블이다. 가상함수 테이블의 역할 다형성을 지원하기 위해 가상함수의 주소를 저장한다. 함수의 주소를 저장한다는 점에서 함수테이블과 동작방식이 비슷하다. 객체의 실제 타입에 따라 올바른 함수를 호출하는 데 사용한다. 우선, 가상함수 테이블에 대해 더 자세히 알려면, 가상함수부터 알아야 한다. 가상함수 virtual 키워드가 붙은 멤버 함수로, 파생클레이스에서 재정의할 수 있다. 가상함수를 선언하는 순간. 해당 클래스는 가상 함수 테이블을 가질 가능성이 생긴다. 만약, 완전가상인 =0 또는 null선언을 해주면 무조건 가상 함수 테이블을 가진다. 가상함수 테이블 클래스에 가상 함수가 하나라도 존재한다면, 해당 클래스의 객체..

  • C++에서 런탕미에 객체의 타입 정보를 확인하는 메커니즘을 말한다. RTTI는 C++의 다형성(polymorphism)을 활용하고 객체의 동적인 특성을 다룰 때 유용하게 사용된다. 사용예시 객체의 실제 타입을 런타임때 확인하는데 사용된다. 다형성을 지원하며, 가상 함수와 함께 사용하여 동적 바인딩 기능을 가능케 한다. typeid 연산자를 사용하여 객체타입의 정보를 얻을 수 있다. typeid typeid 연산자는 객체의 타입정보를 반환한다. #include // 객체 또는 포인터에 대해 typeid 연산자 사용 const std::type_info& typeInfo = typeid(obj); 사용 부분 dynamic_cast dynamic_cast는 RTTI와 함께 사용되며, 안전한 다운캐스팅을 지원한..

  • C++에서는 4가지 형변환 연산자를 지원한다. static_cast 정적캐스트로, 보통 정적 이라 하면 언어에서 컴파일시에~ 동적이라면 런타임시에~ 를 의미함으로, static_cast연산자를 통해 형변환 하면 컴파일 타임에 형변환이 가능한지 검사한다. 컴파일 타임에 수행되는 가장 일반적인 형변환 연산자로, 안전한 형변환이 보장되는 상황에서 사용한다. 기본적인 형변환에서 사용되며, 명시적인 변환을 나타내는 특징이 있다. 장점 명시적이고 간단한 형변환 방법이다. 컴파일러에서 경고를 제공할 수 있다. 단점 런타임 유효성 검사가 없어서, 일부오류가 터졌을때 찾느라 머리도 같이 터질 수 있다. float floatNumber = 3.14f; int intNumber = static_cast(floatNumber..

  • 참조형 변수 (Reference Types) 동작방식 참조형 변수는 기존 변수의 별칭(alias)이며, 동일한 메모리 주소를 가리킨다. 선언시 반드시 초기화 되어야 한다. 값에 의한 복사가 아닌, 원본 변수와 동일한 메모리를 공유함으로 한쪽에서 변경이 다른쪽에 반영된다. int main() { int original = 5; int &refVar = original; // 참조형 변수 선언 refVar += 10; // original은 이제 15이다. original -= 5; // refVar은 이제 10이다. return 0; }

  • 참조에 의한 전달 (Passing by Reference) 동작방식 함수에 전달되는 변수의 메모리주소(참조) 가 매개변수에 전달된다. 함수 내에서 매개변수를 통해 직접 메모리 위치를 참조함으로, 값을 변경하면 호출자의 변수도 변경된다. void addTenByReference(int &num) { num += 10; } int main() { int value = 5; addTenByReference(value); // value는 이제 15이다. return 0; }

  • 값에 의한 전달(Passing by Value) 동작방식 함수에 전달되는 변수의 값이 복사되어 매개변수에 전달된다. 함수 내에서 매개변수의 값을 변경해도 호출자의 변수에는 영향을 주지 않는다. void addTen(int num) { num += 10; } int main() { int value = 5; addTen(value); // value는 여전히 5이다. return 0; }