본문 바로가기

클래스

C++ 변환 연산자(Conversion operator) C++ 클래스에는 변환 연산자라는 특수한 형태의 함수(메소드)를 정의할 수 있습니다.이전에 포스팅한 변환 생성자와 반대되는 개념입니다.변환 생성자에 대한 설명은 아래 링크에서 확인 가능합니다.2014/12/08 - [Programming/C&C++] - C++ 변환 생성자(Conversion Constructor)변환 생성자는 일반 타입에서 클래스의 객체를 생성하는 역할을 하지만변환 연산자는 반대로 객체에서 일반 타입 값을 받을 수 있습니다.변환 연산자는 operator 타입명(); 과 같은 형태로 선언이 가능합니다. #include using namespace std; class Distance { private: int kilometer, meter; public: Distance() : kilome.. 더보기
C++ 변환 생성자(Conversion Constructor) 변환 생성자는 기본 타입을 이용해서 객체를 생성하는 생성자입니다.다음 소스 코드를 보도록 하겠습니다. #include using namespace std; class Distance { private: int kilometer, meter; public: Distance() : kilometer(0), meter(0){} Distance(int newDist) { kilometer = newDist / 1000; meter = newDist % 1000; } void PrintDistance() { cout 더보기
함수 오버로딩(overloading)과 오버라이딩(overriding) C++을 배우면서 이 단어들을 들어 보지 못한 사람은 아마 없을 것입니다.단어가 비슷하기 때문에 처음 배우면 개념이 상당히 헷갈리기도 합니다.간단하게 오버로딩과 오버라이딩을 정의해보면 다음과 같습니다.오버로딩은 함수의 중복 정의, 오버라이딩은 함수의 재정의1. 오버로딩(Overloading)오버로딩은 다음과 같습니다. #include using namespace std; void func(int i) { cout 더보기
C++ 클래스 상속 OOP의 주된 특징 중에 하나는 상속과 그를 통해 구현 되는 다형성입니다. 상속은 현실 세계에서 부모에서 자식에게 전해지는 것과 동일한 의미입니다. 부모 클래스의 정보는 자식에게 전해집니다. 상속은 기존의 클래스를 확장해서 사용할 수 있으며 클래스에 다형성을 부여합니다. 또한, 공통된 속성을 하나로 묶어줄 수 있다는 장점이 있습니다. 일반적으로 C++에서의 상속 클래스는 다음과 같이 표현됩니다. #include using namespace std; class Parent { private: int m_a, m_b; public: Parent(int a = 0, int b = 0) { m_a = a; m_b = b; } void printnum() { cout 더보기
C++ 클래스 생성자에서 초기화 리스트 사용해야하는 경우 C++에서는 클래스를 생성하는데 호출되는 생성자라는 특수한 형태의 함수가 있습니다. class A{}; 가 정의되어 있을때 생성자의 이름은 A(){}이고, 리턴 타입은 존재하지 않습니다. 생성자는 오버로딩이 가능합니다. 즉, 넘겨줄 인자의 형식을 달리해서 다양한 생성자를 둘 수 있습니다. 또한 생성자는 보통 다음과 같이 표현됩니다. A(int a, int b) { m_a = a; m_b = b }; 그런데 이런 방식 말고 초기화 리스트(Member Initialization List)를 사용해서 클래스를 초기화할 수 있습니다. 초기화 리스트는 다음과 같이 표현됩니다. A(int a, int b) : m_a(a), m_b(b) { //더 할 일 }; 되도록이면 초기화 리스트를 사용해서 초기화하는 것을 권장.. 더보기