전체 글
-
참조형 관련@ 16. 1 ~ 17. 1/C++ 2014. 6. 30. 22:36
참조형은 대부분 함수 / 메서드의 파라미터 이다 이유는? 값에 의한 전달이 아닌 원본 자체가 넘겨지는 참조에 의한 전달을 할 수 있기 때문에.. 아래와 같은 함수가 있다면 void swap(int &first, int &second) 함수는 아래처럼 사용한다. int x=5, int y=6; swap(x,y) 보통의 참조형 변수를 상숫값으로부터 초기화할 수 없듯이 참조형 파라미터의도 상숫값을 인자로 못받음. 아래는 안됨 swap(5,6); 만약 포인터로부터의 참조라면.. 함수의 인자로 사용할 변수가 포인터이고 위의 swap함수를 사용한다면. int x=5, int y=6; int *xp=&x, int *yp=&y; swap(*xp, *yp); 이렇게 하면 된다. 그리고 되도록이면 파라미터를 참조형으로 하..
-
메서드 오버라이딩(virtual)의 특수한 경우들@ 16. 1 ~ 17. 1/C++ 2014. 6. 28. 23:25
1. 부모클래스의 메서드가 static인 경우 C++에서는 static 메서드를 오버라이딩할 수 없다. 라는 사실만으로 알고 있자..ㅎㅎ 2. 부모클래스의 메서드가 오버로딩된 메서드인 경우 특정 이름과 파라미터로 메서드를 오버라이딩 하면 파라미터와 관계없이 같은 이름을 가지는 부모클래스의 모든 메서드들이 숨겨진다. A클래스 virtual void sh(); virtual void sh(int i); B클래스 : public A클래스 virtual void sh(); 하게 되면 B클래스.sh(1)는 호출이 안된다. 근데 아래 처럼 포인터로 접근하면.. B b; A *ptr=&b; ptr->sh(1) 은 된다.. 또 다른것으로는 using을 사용하면 오버라이딩 구현을 일부에만 적용하고 나머지는 부모클래스(A..
-
최근에 읽고있는 책..Read @ Book & E-Book 2014. 6. 28. 22:18
기초 수학과 물리 저자 더스틴 클링맨 외 지음 출판사 제우미디어 | 2004-12-27 출간 카테고리 컴퓨터/IT 책소개 게임 프로그래머를 위한 기초 수학과 물리는 게임 프로그래머로서 ... 글쓴이 평점 먼저 이책은..수학과 물리를 쉽게 그리고 실제 코딩과 얼마나 밀접하게 표현이 되는가를 알려준다. 물론..책의 난이도는 어렵지 않으나..ㅎㅎ간혹 오타가 많다. 전문가를 위한 C++. 1 저자 마크 그레고리, 니콜라스 솔터, 스캇 클레퍼 지음 출판사 한빛미디어 | 2013-10-01 출간 카테고리 컴퓨터/IT 책소개 더 쉽게, 더 빠르게, 더 깔끔하게 프로그래머가 알아야 할 C+... 글쓴이 평점 처음부터 C++에 대해서 다시 한번 공부를 하기위해 구입한 책.. 뭐랄까..앞으로 바이블처럼끼고 봐도 될정도로 ..
-
포인터 상속 virtual 객체 자꾸 까먹네.@ 16. 1 ~ 17. 1/C++ 2014. 6. 26. 23:36
A B : public A C : public B 이런경우 A* = new A B C; 라면 virtual의 경우 각 new의 ABC에 해당되는 virtual 함수가 실행됨. 그리고 new의 경우 아래단위로 밖에 안됨 B* = new A 는 안됨 new B C는 됨.. virtual함수가 아닌 일반함수의 경우 A* = new ABC라면 new ABC와는 상관없이 A의 일반함수만 호출됨...B*이면 B의 일반함수와 A의 일반함수가. 나만 읽고 쓰기 편하게 정리..
-
항목 37 : 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자@ 16. 1 ~ 17. 1/Effective C++ 2014. 6. 2. 23:15
기본클래스 *ptr1; 기본클래스 *ptr2 = new 첫번째 상속클래스 기본클래스 *ptr3 = new 두번째 상속클래스 여기서 ptr1, ptr2, ptr3는 모두 기본 클래스에 대한 포인터로 선언되어 있기 때문에 각각의 정적 타입도 모두 이 타입이다 정적 타입이란 프로그램소스 안에 선언문을 통해 그 객체가 갖는 타입을 말한다. 정적타입이 기본클래스 일뿐.. 동적타입은 ptr2의 동적 타입은 첫번째 상속클래스 ptr3는 두번째 상속클래스 ptr1은 없기 때문에 없다. 동적 타입은 프로그램이 실행되는 도중에 바뀔 수 있다. 대게 대입떄.. ptr1=ptr2 // ptr1의 동적 타입은 이제 첫번째 클래스가 된다. 가상함수는 동적으로 바인딩된다. 호출이 일어난 객체의 동적 타입에 따라 어떤 가상함수가 호..
-
항목 33 : 상속된 이름을 숨기는 일은 피하자@ 16. 1 ~ 17. 1/Effective C++ 2014. 6. 1. 20:30
유효범위는 우선 지역범위 그다음에 바깥쪽 유효범위를.. 파생클래스의 유효범위가 기본 클래스의 유효범위안에 중첩되어있다. 기본 클래스에 있는 함수들은 모두 파생 클래스에 있는 함수(동일한 이름)에 가려지고 만다. 기본 클래스와 파생 클래스에 있는 함수(이름이 같은, 오버로드 할 시..)들이 받아들이는 매개변수 타입이 다르거나 말거나 거리낌없이 가려진다. 심지어 가상함수인지 비가상함수 인지의 여부도 상관이 없다.. 그 이유는 멀리 떨어져 있는 기본 클래스로부터 오버로드 버전을 상속시키는 경우는 막겠다. 그러나 가능한 방법이 있다. using 기본클래스::함수명; 이런식으로 public: 아래에 선언을 하면 된다. 주의해야할것은 private 상속일시 using은 그 이름에 해당되는 것들이 모두 파생클래스로 ..