목록2025/03/26 (3)
나만의 작은 도서관
explicit 키워드explicit Mystring(int capacity); // 생성자를 explicit으로 지정 대입 연산자가 생성자로 암시적 변환되지 못하도록 막는 키워드. 암시적 변환(implicit conversion) 시 문제점암시적 변환은 프로그래머가 명시적으로 변환을 요청하지 않더라도 컴파일러가 자동으로 처리하는 타입 변환을 말한다. 이러한 암시적 변환은 아래의 예시에서 대입 연산자가 생성자로 변환되는 것처럼, 원하지 않는 방식으로 변환되는 문제가 있다.class MyClass {public: MyClass(int x) { cout [MyClass myclass(3)]으로 암시적 변환 발생func(3); // func(MyClass(3))이 실행.// 실행 결과// MyClass..

오버라이딩(overriding)이란?오버라이딩은 기반 클래스에 정의된 함수를 파생 클래스에서 “재정의”하는 것을 의미한다.오버라이딩한 함수는 부모 클래스의 함수와 다른 함수로 취급한다.시그니처가 같아도 다른 클래스에 정의되어 있으면 서로 다른 함수로 취급하기 때문.객체는 같은 시그니처를 가진 함수가 여러 개 정의되어 있는 경우, 가장 가까운 함수를 호출한다.즉, 오버라이딩한 파생 클래스의 함수를 우선적으로 호출한다. 오버라이딩 하는 법오버라이딩하는 방법은 간단하다. 기반 클래스에 정의한 함수의 시그니처와 일치하는 함수를 파생 클래스에 재정의하면 된다.#include using namespace std;class Base {public: void ShowString() {cout 위 방식의 문제점..

상속(Inheritance)이란?상속은 다른 클래스의 내용을 그대로 물려받아서 사용하는 것을 의미한다.좀 더 딱딱하게 말하면, 기존 클래스(부모 클래스 또는 상위 클래스)의 속성과 기능을 새로운 클래스에서 재사용하거나 확장할 수 있도록 하는 기능을 의미한다.상속을 이용하면 상하 관계에 있는 클래스들 내에 중복되는 코드가 생기는 것을 방지할 수 있다.상속 시, 상속을 하는(물려주는) 클래스를 기반 클래스 또는 부모 클래스라고 부르며, 상속을 받는(물려받는) 클래스를 파생 클래스 또는 자식 클래스라고 부른다. (앞으로의 설명에선 각각 기반 클래스, 파생 클래스라 부름) 상속의 기본 구조class Base {} // 기반 클래스class Derived : public Base {} // 파생 클래스Base 클..