본문 바로가기

전체 글57

항목 7. 다형성을 가진 기본클래스에서는 소멸자를 반드시 가상소멸자로 선언하자 1. 팩토리함수 - 정의 : (생성된 파생클래스 객체)를 가리키는 (기본클래스의 포인터)를 반환하는 함수 - 유의할점 : 파생클래스의 객체를 new로 할당하기때문에 메모리를 적절히 삭제해야한다. * 문제가 되는 코드를 살펴보자. class product{ public: virtual void print() = 0; }; class concreteProduct : product{ public: void print() override{ cout기본클래스 순이다. 기본클래스의 가상소멸자가 선언만 있고 정의는 없을경우, 호출이 불가능하므로 , 선언 그리고 정의도 해주어야 한다. 이것만은 잊지말자 ! - 다형성을 가진 기본 클래스에는 반드시 가상 소멸자를 선언해야 한다. 즉, 어떤 클래스가 가상함수를 하나라도 갖.. 2019. 10. 22.
타입과 타입시스템 http://ahnheejong.name/articles/types 2018. 9. 8.
scanf 연속으로 사용할때 오류 1234567int a; char b;scanf("%d", &a); scanf("%c", &b); printf("%d", a); printf("%c", b); cs처럼 연속사용할때 오류가 생긴다. a의 값을 입력을 한 후에 enter 키를 누르면 컴퓨터는 enter를 키 입력값으로 받아들이기때문에, 버퍼에 엔터키값이 추가된다. 두번째 scanf는 enter키를 입력받았다고 생각하기에, 두번째 scanf는 동작하지 않는다. 해결법 1. fflush(stdin); // 버퍼를 비워준다. 해결법 2두번째 scanf(" %c") %c앞에 공백을 넣어 해결한다.->이렇게 해주면 white space를 구분자로 간주한다고 한다. 2016. 11. 5.