개발자 능력치 물약/C++(11)
-
Fall Back, Fall through
🧩 1. Fallback (폴백)✅ 뜻기본 방식이 실패하면 다른 대체 방식으로 넘어가는 것✅ 주요 맥락파일 파싱 실패 시 다른 포맷 시도서버 요청 실패 시 다른 서버나 캐시를 사용폰트가 없으면 대체 폰트를 보여줌if (!LoadNewFormat(filePath)) { LoadOldFormat(filePath); // 폴백: 새로운 방식 실패 → 옛날 방식으로 대체}🧩 2. Fallthrough (폴스루)✅ 뜻switch 문에서 break 없이 다음 case로 넘어가는 것✅ 주요 맥락switch-case에서 쓰임조건이 맞는 case 블록 실행 후, 명시적으로 중단하지 않으면 다음 case도 계속 실행됨switch (command) {case 1: DoBasicAction();// break;..
2025.04.21 -
디자인패턴: 싱글톤, 팩토리, 전략패턴
Gof 디자인 패턴프로그래머 선배님들의 노하우가 깃든 방식이다.객체지향 개념에 따른 설계중에서 재사용할 경우에 유용한 것을 디자인 패턴으로 정립한 것이다. solid원칙과 공통되는 점들이 많다. 싱글톤 시스템에서 어떤 자원이 공유될때 사용한다. 예를 들어 게임의 키입력부분, 핸드폰의 카메라는 여러 클래스에서 공유한다.단 하나의 클래스로 관리를 하게 만드는 것이 싱글톤이다. 한 클래스에서 오직 하나의 객체만을 생성한다. 생성자가 private으로 선언되어있음.생성자 호출로 객체를 생성할 수 없고 public 메소드인 getInstance()로 객체를 반환해서 사용한다.관리가 편하다.팩토리 메소드추상클래스에서 인터페이스를 제공하고 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 한다.즉 객체생성을 ..
2025.03.27 -
복사생성자, 상속, 다형성
복사생성자복사생성자는 선언하지 않아도 컴파일러가 기본으로 생성해준다.복사생성자가 쓰이는 경우1. 같은 종류의 객체로 초기화할때2. 객체를 함수에 전달할때3. 함수에서 객체를 반환할때 복사는 얕은복사, 깊은복사가 있는데얕은복사 -> 주소 값을 복사한다. 같은 메모리 공간을 공유하고있음. 깊은복사 -> 새로운 메모리 공간에 할당하여 복사해줌.복사생성자에서 동적생성을 한다면 메모리를 공유하는 객체가 소멸되면 같은 주소를 가지는 다른 객체의 메모리도 날아가는 상황이 발생할수있음. 이럴때 직접 복사생성자를 선언해야함(깊은 복사) 상속클래스의 중복을 최소화하고 재사용을 위해 사용한다. (is-a)관계자식클래스가 private을 제외한 부모클래스의 모든 멤버함수, 변수를 상속받음. public, protected ..
2025.03.27 -
SOLID 원칙
SOLID 원칙은 유지보수성과 확장성이 뛰어난 소프트웨어를 설계하는 데 도움을 주는 객체 지향 설계 원칙이다.SOLID는 다음 5가지 원칙의 앞글자를 따서 만든 약어다.대부분의 디자인패턴은 solid원칙을 기반으로 파생되었다.Single Responsibility Principle (SRP) - 단일 책임 원칙Open/Closed Principle (OCP) - 개방-폐쇄 원칙Liskov Substitution Principle (LSP) - 리스코프 치환 원칙Interface Segregation Principle (ISP) - 인터페이스 분리 원칙Dependency Inversion Principle (DIP) - 의존 역전 원칙1. 단일 책임 원칙 (Single Responsibility Princ..
2025.03.24 -
백준 14490 백대열: 문자열파싱/ 최대공약수 구하기
문제 :문자열을 입력받아 정수로 변환하고 최대공약수를 구해 나누는 문제였다입력n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000)ex) 10:1, 18:24출력두 수를 최대한으로 약분하여 출력한다. 작성코드#include #include #include using namespace std;int main(){ //입력 n:m n과m의 최대공약수로 나누기 string inputNums; cin >> inputNums; //18:24 3:4 string A{}, B{}; int a{}, b{}, grad{}; //문자열을 ':'기준으로 잘라서 왼쪽을 a, 오른쪽을 b에 넣기 A = inputNums.substr(0,inputNums.find(":")); B = inputN..
2025.03.17 -
0315 형변환 , L/Rvalue
템플릿은 인스턴스화 전까지 컴파일시 아무런 코드로 변환되지 않는다static 멤버 변수: 프로그램이 종료될때 사라짐, 모든객체들이 공유하는 변수const static 이 아니면 외부에서 선언, 선언시 0으로 초기화static으로 선언한 함수: 클래스::함수명 으로 호출, 함수내에서는 static으로 선언한 변수만 사용가능 초기화 리스트 : 생성자() : 변수(값), ... { }mutable : const 함수 안에서 변수를 수정하기 위해 씀 explicit: 명시적 형변환, 컴파일러가 마음대로 형변환해서 오류가 생기는걸 방지하기 위해 씀c++에는 static_cast, dynamic_cast 같은 발전된 형변환 기능이 있다. static cast는 컴파일 타임에 형변환 오류를 잡아줌dynamic_cas..
2025.03.15