본문 바로가기

분류 전체보기

(71)
C++ 가상 함수(Virtual function) 가상 함수 가상 함수는 상속받은 기본 클래스의 함수를 파생 클래스에서 다시 정의할 때 사용한다. 기본 클래스에 정의된 함수를 사용하지 않고, 같은 이름의 함수를 다시 정의하는 것이다. 이러한 가상 함수를 사용하는 이유는 객체의 다형성을 지원하기 위해서이다. 가상 함수를 정의하려면 앞에 virtual이라고 표기해야 한다. 자세한 내용은 아래 예제에서 참고할 수 있다. 예제 #include using namespace std; class POINT { private: int sx, sy; public: POINT(int a, int b) { sx = a; sy = b; } virtual void PutData()// 가상함수 { cout
C++ 클래스 다중 상속 다중 상속 다중 상속에는 2가지 경우가 있다. 하나는 이미 상속받은 파생 클래스를 기본 클래스로 하여 또다시 상속하는 경우와 2개 이상의 기본 클래스를 상속받아 파생 클래스를 정의하는 경우가 있다. 이러한 다중 상속을 통하여 클래스를 매우 다양하게 만들 수 있다. 자세한 내용은 아래 예제에서 참고할 수 있다. 예제 #include using namespace std; class POINT { private: int sx, sy;// private 멤버 변수 public: POINT(int a, int b) {// 생성자 함수 sx = a; sy = b; } int GetSx() { return sx; } int GetSy() { return sy; } }; class FC { private: int x1..
C++ 클래스 상속 II 클래스의 생성자 인수 전달 기본 클래스와 파생 클래스는 자체에 각각 생성자와 소멸자를 가질 수 있다. 이때 생성자의 호출 순서는 먼저 기본 클래스의 생성자가 호출되고 파생 클래스의 생성자가 호출된다. 소멸자인 경우는 반대로 파생 클래스의 소멸자가 호출되고 기본 클래스의 소멸자가 호출된다. 파생 클래스의 생성자가 호출될 때, 선언된 일부 매개 변수를 기본 클래스의 생성자에게 전달해 주는 방법이 있으므로 그 문제를 예방할 수 있다.. 아래 예제에서 자세한 내용을 확인할 수 있다. 예제 #include using namespace std; // 기본 클래스인 POINT 정의 class POINT { private: int sx, sy;// private로 선언된 멤버 변수 public: // public으로 ..
C++ 클래스 상속 I 상속 상속은 새로운 클래스가 기존의 다른 클래스의 특성을 그대로 이어받는 것을 말한다. 상속성은 클래스 확장을 위해 매우 유용하며 다양하게 발전함으로써 특별한 용도에 맞는 클래스를 정의할 수 있다. 상속에서 기본 클래스는 상속을 해주는 클래스이고, 파생 클래스는 상속을 받는 클래스이다. 일반적으로 기본 클래스에는 일반적인 특성이 정의되어 있고, 파생클래스는 특정 목적으로 정의되어 있다. 아래 예제에서 클래스 상속에 대한 자세한 내용을 확인할 수 있다. 예제 #include using namespace std; // 기본 클래스 POINT 정의 class POINT { private: int sx, sy;// private 멤버변수 public: void SetPoint(int a, int b) { sx ..
C++ friend 함수 friend 함수 friend 함수는 클래스 멤버 함수가 아니면서 클래스의 private 멤버 변수를 사용할 수 있는 함수이다. friend 함수가 필요한 이유는 연산자 오버로드와 특별한 입출력 함수를 만드는데 유용하기 때문이다. friend 함수는 클래스의 멤버 함수가 아닌 일반 함수로 정의된다. friend 함수는 참조하는 클래스 안에 함수 선언해야 하는데, 함수 이름 앞에 friend를 붙여서 선언해야 한다. 참고로 friend 함수는 상속되지 않으므로 파생 클래스에 friend 함수를 사용할 수 없다. 예제 #include using namespace std; class POINT { private: int x, y; // private로 선언된 멤버 변수 public: POINT();// 생성자..
C++ this 포인터 this 포인터 C++는 this 포인터 기능을 제공하는데 객체의 포인터를 의미한다. 클래스 멤버 함수에서 이 클래스를 기반으로 하는 객체의 주소를 명시적으로 지정할 때 사용된다. 예제 #include using namespace std; class POINT { public: int a; void SetPoint(int a) { // 매개 변수 a의 값을 이 객체의 멤버 변수 a에 지정함 this->a = a; } }; void main(void) { POINT object;// 객체 object 선언 object.SetPoint(10); cout
C++ 동적 메모리 할당 및 제거 (new, delete) 동적 메모리 할당 및 제거 C++는 필요한 경우에는 데이터를 할당하여 사용한 후, 사용이 완료되었을 때 할당받은 데이터를 제거하는 방법을 제공한다. 이 방법은 대용량 데이터가 필요한 경우 동적 메모리를 자주 사용한다. 그리고 동적 메모리로 효율적으로 메모리를 사용할 수 있다. 자세한 내용은 아래 예제에서 확인할 수 있다. 예제 #include using namespace std; int main() { int* psum;// 정수형 데이터의 시작 주소를 저장하는 변수 선언 // 정수형 (int) 데이터를 1개 (4바이트) 할당 받고 이 주소를 psum에 저장 psum = new int;// 동적 메모리 할당, 만약 정수형 데이터를 100개 할당 받고 싶으면 psum =new int[100]; if (ps..
C++ 객체 포인터와 객체 배열 객체 포인터와 객체 배열 객체를 다른 곳에서 공유할 경우에는 객체 규모가 크기 때문에 객체를 통째로 복사하는 것은 메모리 사용면에서 비효율적이다. 이러한 경우 객체 포인터를 사용하여 효율적으로 객체를 공유할 수 있다. 아래 예제로 객체 포인터와 객체 배열의 사용 방법을 참고할 수 있다. 예제 #include class POINT {//클래스 이름 (POINT)으로 클래스 정의 시작 private: int x, y;// private 멤버 변수 public: void SetPoint(int a, int b) {// 멤버 함수 x = a; y = b; printf("x=%d, y=%d \n", x, y); } };// 클래스 정의 완료 int main() { POINT ob, obarray[3], * pob..
C++ 생성자와 소멸자 생성자와 소멸자 생성자와 소멸자는 객체가 생성되거나 객체가 소멸될 때 자동적으로 호출되는 멤버 함수이다. 생성자 함수는 객체가 선언될 때 자동적으로 멤버 변수의 값을 초기화할 필요가 있기 때문에 존재한다. 소멸자는 보통 객체가 동적 메모리 등 자원을 할당 받았을 경우 객체가 소멸되기 전에 이를 제거하기 위해 사용된다. 생성자의 이름은 클래스 명과 동일한 이름으로 정의하며, 소멸자는 클래스 이름 앞에 칠다(~)기호를 붙여서 정의한다. 생성자와 소멸자를 정의하는 방법은 아래 예제와 같다. 예제 #include class POINT {// 클래스 이름 (point) 으로 정의 시작 private: int x, y;// private 멤버 변수 public: void SetPoint(int a, int b) {..
C++ 클래스의 정의 C++ 언어는 구조적 언어인 C 언어를 객체 지향 언어로 확장한 프로그래밍 언어이다. 기존의 C 언어의 특성을 그대로 이어받으면서 객체 지향에 맞도록 클래스 및 객체라는 개념을 추가한 것이 가장 큰 특징이다. 이번 포스팅에서 C++에서 사용되는 클래스의 정의 및 객체의 사용 방법을 간단히 알아보고자 한다. 클래스의 정의 클래스의 정의는 아래와 같다. class 클래스 이름 { private: 데이터 (변수) 및 메소드 (함수) 정의 public: 데이터 (변수) 및 메소드 (함수) 정의 protected: 데이터 (변수) 및 메소드 (함수) 정의 }; 여기서 private, public, protected는 접근 권한을 정하는 것이다. public으로 선언된 멤버인 데이터 및 함수는 객체 외부에서도 직접..