프로그래밍 언어(154)
-
C++ 초급 - 8. 객체지향 프로그래밍 (6 - explicit 생성자 (C++11))
📌 8.6 explicit 생성자 (C++11)C++에서는 암시적 변환(Implicit Conversion)으로 인해 예기치 않은 객체 변환이 발생할 수 있다.이를 방지하기 위해 explicit 키워드를 생성자 앞에 붙이면, 암시적 변환을 금지하고 명시적 변환만 허용할 수 있다.이러한 기능을 활용하면 코드의 안전성을 높이고, 예측하지 못한 동작을 방지할 수 있다.📌 1. 암시적 변환(Implicit Conversion)의 문제점🔹 (1) 암시적 변환이란?C++에서는 단일 인자를 받는 생성자가 있을 경우, 해당 타입의 값을 자동 변환하여 객체를 생성할 수 있음.즉, 클래스 객체가 명시적으로 생성되지 않아도 암시적으로 변환되어 객체가 만들어지는 문제가 발생할 수 있음.💡 예제: 암시적 변환으로 발생하..
2025.02.22 -
C++ 초급 - 8. 객체지향 프로그래밍 (5 - C++11의 override와 final)
📌 8.5 C++11의 override와 finalC++11에서는 가상 함수 오버라이딩을 더 명확하고 안전하게 수행하기 위해 override 키워드와 final 키워드가 추가되었다.이를 통해 컴파일러가 오버라이딩 오류를 검출할 수 있으며, 클래스나 함수의 상속 및 재정의를 제한할 수도 있다.📌 1. override 키워드의 필요성🔹 (1) override란?부모 클래스의 virtual 함수를 자식 클래스에서 재정의할 때 명확하게 표시하는 키워드.컴파일러가 오버라이딩 여부를 검사하므로 실수 방지 가능.부모 클래스에 해당 함수가 없으면 컴파일 오류 발생.🔹 (2) override 없이 발생하는 문제부모 클래스의 가상 함수 이름을 잘못 입력하거나, 매개변수 리스트가 다르면 오버라이딩되지 않음.하지만, ..
2025.02.22 -
C++ 초급 - 8. 객체지향 프로그래밍 (4 - 인터페이스 개념 (Interface))
📌 8.4 인터페이스 개념 (Interface)C++에는 Java나 C#과 같은 interface 키워드는 존재하지 않지만,추상 클래스(Abstract Class)를 활용하여 인터페이스 개념을 구현할 수 있다.C++에서는 순수 가상 함수만 포함하는 클래스를 인터페이스(Pure Interface)로 사용하며, 이를 통해 다중 상속(Multiple Inheritance)과 다형성(Polymorphism)을 활용한 설계가 가능하다.📌 1. 인터페이스의 정의🔹 (1) C++에서의 인터페이스란?C++에는 interface 키워드가 존재하지 않음.대신 순수 가상 함수(virtual 함수명() = 0;)만 포함하는 추상 클래스를 인터페이스로 사용.인터페이스는 메서드의 "명세"만 제공하고, 실제 구현은 파생 클래..
2025.02.22 -
C++ 초급 - 8. 객체지향 프로그래밍 (3 - 순수 가상 함수 (= 0))
📌 8.3 순수 가상 함수 (= 0)C++에서 순수 가상 함수(Pure Virtual Function)는 자식 클래스에서 반드시 구현해야 하는 가상 함수를 의미한다.이를 포함하는 클래스를 추상 클래스(Abstract Class)라고 하며, 추상 클래스는 직접 인스턴스를 생성할 수 없고, 인터페이스 역할을 한다.📌 1. 순수 가상 함수란? (virtual 함수명() = 0;)🔹 (1) 순수 가상 함수 정의순수 가상 함수(Pure Virtual Function)는 = 0을 사용하여 선언하는 함수.구현 없이 선언만 존재하며,해당 클래스를 상속받은 자식 클래스에서 반드시 오버라이딩해야 함.💡 기본 문법class 클래스이름 {public: virtual void 함수명() = 0; // 순수 가상 ..
2025.02.22 -
C++ 초급 - 8. 객체지향 프로그래밍 (2 - virtual 함수와 오버라이딩 (Overriding))
📌 8.2 virtual 함수와 오버라이딩 (Overriding)C++에서 가상 함수(virtual function)는 동적 바인딩(Dynamic Binding)을 활용하여,파생 클래스(자식 클래스)에서 부모 클래스의 함수를 재정의(Overriding)할 수 있도록 하는 기능이다.이를 통해 다형성(Polymorphism)을 구현하고, 객체지향 프로그래밍(OOP)의 핵심 개념을 실현할 수 있다.📌 1. 가상 함수 (virtual function)의 개념과 필요성🔹 (1) 정적 바인딩(Static Binding) vs. 동적 바인딩(Dynamic Binding)정적 바인딩(Static Binding): 컴파일 타임에 호출할 함수를 결정.동적 바인딩(Dynamic Binding): 런타임에 객체의 타입을..
2025.02.22 -
C++ 초급 - 8. 객체지향 프로그래밍 (1 - 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism))
📌 8. 객체지향 프로그래밍 (OOP)C++은 객체지향 프로그래밍(Object-Oriented Programming, OOP) 언어이며,캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)을 기본 개념으로 한다.또한 가상 함수(Virtual Function), 인터페이스(Interface), C++11의 새로운 기능(override, final, explicit) 등을 포함하여 OOP의 핵심 개념을 학습한다.📌 8.1 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)C++의 객체지향 프로그래밍(OOP)은 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)을 핵심 ..
2025.02.22