반응형 C++93 C++ - 가상 소멸자 (Virtual Destructor) C, C++ 전체 링크 virtual 예시에서 사용한 코드에서 소멸자를 추가한 후, foodList의 메모리를 해제해보자. 각 class에 생성자를 추가하고 foodList[0]은 new FOOD로 수정하였다. #include #include using namespace std; class FOOD { private: int price = 0; public: FOOD() { printf("FOOD created\n"); } ~FOOD() { printf("FOOD deleted\n"); } virtual void printName() { cout 2021. 8. 23. C++ - explicit 키워드 C, C++ 전체 링크 아래의 코드를 실행해보자. #include #include using namespace std; class TEST { public: int value1; TEST() : value1(0) { cout 2021. 8. 22. C++ - virtual, type casting C, C++ 전체 링크 이전 글에서 다시 virtual 키워드를 지우고, main을 아래와 같이 작성해보자. FOOD type에 MILK로 객체를 생성한 후, SNACK으로 type casting하여 printName을 호출한다. #include #include using namespace std; class FOOD { private: int price = 0; public: void printName() { cout 2021. 8. 15. C++ - virtual 키워드 C, C++ 전체 링크 아래의 클래스를 보자. SNACK과 MILK 클래스는 FOOD 클래스를 상속한다. #include #include using namespace std; class FOOD { private: int price = 0; public: void printName() { cout printPrice(); foodList[i]->printLine(); } return 0; } 출력결과는 예상과 다르다. foodList의 원래 형태는 FOOD class지만, 실제 객체는 SNACK이나 MILK가 된다. 그러나 FOOD의 printName과 printPrice가 실행되었다. 즉, 형변환이 이루어진 포인터 변수는 원래 형태(부모)의 함수를 호출하게 된다. virtual을 이용하면 형변환이 이루.. 2021. 8. 14. C++ - 복사 생성자를 이용한 객체의 깊은 복사 (Deep Copy using Copy Constructor) C, C++ 전체 링크 링크의 코드에 setValue를 추가하고 아래의 코드를 실행해보자. #include #include using namespace std; class TEST { public: int value1; int value2; TEST() : value1(1), value2(2) { cout 2021. 8. 10. C++ - 명시적 디폴트 생성자 C, C++ 전체 링크 아래와 같이 디폴트 생성자의 정의를 분리할 수 있다. #include #include using namespace std; class TEST { public: int value; TEST(void); void printValue() { cout 2021. 7. 29. C++ - 상수형 메서드와 mutable, const_cast<> C, C++ 전체 링크 링크를 참고하여 다시 아래의 코드를 보자. 여기서 printValue는 value1, value2를 출력만 할 뿐, 수정은 하지 않는다. #include #include using namespace std; class TEST { public: int value1; int value2; TEST() { cout 2021. 7. 28. C++ - 생성자 초기화 리스트 (Constructor Member Initializer List) C, C++ 전체 링크 class의 생성자에서 아래와 같이 변수를 초기화 할 수 있다. #include #include using namespace std; class TEST { public: int value1; int value2; TEST() { cout 2021. 7. 26. C++ - 함수 템플릿 (Function Template) C, C++ 전체 링크 같은 일을 하는 함수가 타입만 다를 경우, 함수 템플릿을 이용하여 편의성과 확장성을 얻을 수 있다. template 를 선언하면 일반 함수와 만드는 것과 같다. 여기서 cout을 이용하면, return type에 상관없이 같은 방식으로 다른 타입을 출력할 수 있다. 아래와 같이 모든 type에 대해 덧셈을 return하는 함수가 있다고 하자. template T add(T a, T b) { return a + b; } 그러면 cout을 이용해 아래와 같이 출력하면 된다. cout 2021. 7. 22. 이전 1 ··· 6 7 8 9 10 11 다음 반응형