목록Programming (115)
Nagie's DevStory
가상 함수(virtual function)는 C++의 객체 지향 프로그래밍에서 다형성(polymorphism)을 구현하는 데 사용되는 중요한 개념이다. 사용하는 방법은 어렵지 않다. 클래스 내에서 선언 할 때 'virtual' 키워드를 사용해 선언해 주면 된다. 아래는 가상 함수를 선언하는 예시다. class Base { public: virtual void myFunction() { // 가상 함수의 기본 구현 } }; 'virtual' 키워드를 사용해 함수를 구현하게 되면 파생 클래스에서 재정의가 가능하게 되는데 이땐 'override' 키워드를 사용해야 한다. class Derived : public Base { public: void myFunction() override { // 가상 함수의 파..
변환 생성자는 다른 데이터 형식의 값을 받아들여 해당 데이터 형식의 객체로 변환하도록 클래스를 정의하는 생성자다. 다른 데이터 형식에서 클래스 객체를 만들 수 있도록 하는 방법으로 사용된다. 요약하면 다음과 같다. 1. 다른 데이터 형식에서 객체를 만들 필요가 있을 때. 2. 형 변환 연산이 필요한 경우. 변환 생성자는 다음과 같이 정의할 수 있다. class MyClass { public: MyClass(int x) { // 변환 생성자의 구현 } }; 예를 들어 'MyClass'의 변환 생성자를 사용하면 다음과 같이 정수 인스턴스를 가지고 'MyClass' 객체를 만들 수 있게 된다. int number = 42; MyClass myObject = number; // 변환 생성자 호출 다만 이 과정이..
C++에서 복사 생성자는 객체의 생성 및 초기화에 사용된다. 복사 생성자는 하나의 객체가 다른 객체를 복사하여 생성될 때 호출되는 생성자이며 사용자가 따로 정의를 했다면 깊은 복사(deep copy)를 수행하기에 새로운 객체는 기존 객체와 동일한 데이터를 가지지만 독립된 메모리 공간을 사용한다. 요약하자면 다음과 같은 상황에서 호출된다. 1. 객체를 다른 객체로 초기화할 때 2. 객체를 함수에 전달할 때 (파라미터로 객체를 전달하거나 반환 값으로 객체를 반환할 때) 3. 객체를 다른 객체에 할당할 때 다음은 복사 생성자의 정의 방법이다. class MyClass { public: MyClass(const MyClass& other) { // 복사 생성자의 구현 } }; 특히 클래스 내부에 포인터 데이터 ..
class MyClass { public: int publicVar; // 외부에서 직접 액세스 가능 protected: int protectedVar; // 파생 클래스와 클래스 내부에서만 액세스 가능 private: int privateVar; // 클래스 내부에서만 액세스 가능 public: void publicFunction() { // ... } protected: void protectedFunction() { // ... } private: void privateFunction() { // ... } }; 접근 지정자는 클래스의 데이터 멤버나 멤버 함수의 접근 권한을 제어하는 데 사용되는 키워드다. 접근 지정자는 클래스 외부에서 클래스 멤버에 대한 접근을 제한하거나 허용하는 데 중요한 역할을..
객체지향 프로그래밍에서의 상속은 이미 정의된 클래스의 기능을 이어받아 새로운 클래스를 만들어 내는 행위를 말한다. 언어마다 상속받는 방법은 조금씩 다르지만, C++에서의 기본 상속 방법은 다음과 같다. class 기본클래스 { // 기본 클래스의 멤버 변수와 함수들 }; class 파생클래스 : public 기본클래스 { // 파생 클래스의 멤버 변수와 함수들 }; 상속은 :(콜론) 다음에 기본 클래스의 이름을 명시하는 것으로 시작한다. 파생 클래스는 기본 클래스의 모든 데이터 멤버와 멤버 함수를 상속받게 되며 파생 클래스 내에서 추가적인 데이터 멤버나 멤버 함수를 정의할 수 있다. 또한 상속받는 클래스의 접근 지정자는 public 말고도 private이나 protected를 사용할 수도 있지만. pub..