반응형

프로그래밍/cpp 46

가상함수 virtual 키워드 C++

클래스 타입의 포인터로 멤버함수를 호출할 때 virtual 키워드의 유무에따라 동작이 달라지게된다. 예를들면 class A { public: void test(){코드1} }; class B : public A{ public: void test(){코드2} }; A *a = new B(); a->test(); //동작1 : 코드1이 실행 동작2 : A클래스의 멤버함수인 test()를 virtual로 선언하면 코드2가 실행 좀더 확실하게 살펴보자 다음과 같이 코드를 작성해보자. A클래스와 A를 상속한 B클래스를 선언한 뒤 Message함수를 만들어 A클래스타입의 포인터 pa를 인수로 하여 A객체와 B객체를 정적/동적바인딩을 해보자. 정적바인딩 동적바인딩(vitual 키워드 사용) vitual 키워드의 유무..

프로그래밍/cpp 2013.06.04

상속과 생성자에 대한 고찰 C++

상속을 하면 자식클래스의 생성자는 어떻게될까? 부모의 생성자가 상속이 될 리는 없다. 우선 생성자의 이름이 다르기때문이다. 기능적인 상속조차 안된다는 것이다. 대신 자식클래스의 객체를 생성하게되면 부모클래스(최고부모까지) 거슬러올라가면서 생성자가 차례로 호출된다. 그럼 인수를 받아서 초기화해야하는 생성자의 경우는 어떤한가? 멤버이니셜라이져를 사용하면된다.

프로그래밍/cpp 2013.06.04

포인터 객체배열 C++

포인터 객체 배열이란? 클래스의 객체의 주소값을 가르키는 포인터들을 담는 배열이다. 간략하게 사용법을 적는다. Storage* Arr[100]; 선언을 한후 초기화는 하지않았다. 배열은 선언후 초기화를 해야하지않나요? 하지만 프로그램의 실행중에 동적으로 생성되는 객체를 무슨수로 초기화할 수 있을까. 그럼 메커니즘을 설명해보겠다. Arr[100] 포인터 배열은 초기화가 안되어있으므로 Arr[0]. Arr[1].... --------------> NULL 을 가르킨다. // 전역변수로 선언시! 배열요소가 비어있는 판단하는 기준은 Arr[i]==NULL 인지를 판단하고 객체의 생성은 new키워드의 동적할당이다. 이렇게 동적할당된 ////////// 포인터배열은 전역변수로 선언시 모든 요소는 NULL로 초기화된..

프로그래밍/cpp 2013.06.04

클래스 객체와 포인터 그리고 다형성 C++

C++에서 객체의 의미와 클래스타입의 포인터가 갖는 의미 그리고 다형성에 대해서 살펴보도록하자. 다음은 상속의 개념을 간략화한 그림이다. (멤버변수,함수) (클래스) ㅁ ----------- ㅁ; 이런 선언시 호출되는 ㅁ도A 클래스의 것이다. 어떻게 된일인가. A객체포인터로 C를 가르키지말고 차라리 A를 가르키는거나 무슨차이가 있는 것인가? 그렇다 차이가없다. ㅁ

프로그래밍/cpp 2013.05.09
반응형