시작은 미미하나 끝은 쥬쥬하리라.

Study 76

[열혈 C++ 프로그래밍] (9) 가상의 원리와 다중상속

가상의 원리와 다중상속 멤버함수와 가상함수 다중상속 멤버함수와 가상함수 멤버 함수 물리적으로 메모리의 한 공간에 별도로 위치하여 함수가 정의된 클래스의 모든 객체가 메모리를 공유하는 형태 -> 논리적으로는 객체 안에 멤버 함수 존재 멤버 객체 객체가 생성되면 멤버 객체는 객체 메모리 공간 멤버 객체 객체가 생성되면 멤버 객체는 객체 메모리 공간 내부에 생성 가상함수 동작원리 1. 가상함수가 멤버로 포함 2. 가상함수 V-Table이 생성 3. 함수를 호출하는 경우 V-Table을 참조 -> 가상함수 테이블을 클래스별로 생성 : A클래스 테이블에는 B클래스 가상함수 정보가 없음 -> 가상함수 오버라이딩의 경우 유도 클래스의 V-Table에서 기초 클래스의 가상함수가 가려짐 -> 기초 클래스의 가상 함수가 ..

[열혈 C++ 프로그래밍] (8) 상속과 다형성

상속과 다형성 객체 포인터와 참조 가상함수 가상 소멸자와 참조자의 참조 가능성 객체 포인터와 참조 객체 포인터 기초 클래스의 포인터로 유도 클래스의 객체를 호출 가능 : 유도 클래스 내부의 기초 클래스 멤버만 호출 가능 -> 유도 클래스에서 상위 클래스인 기초 클래스의 객체를 참조하는 것은 불가능 : 대부분의 상황에서 X - Person Student 클래스 내부의 Person 멤버를 가리키 고 있으므로 KIm 객체로 Sleep함수를 가리키면 Sleep 출력 - Person* Park = new PartTimeStudent; -> PartTimeStudent 클래스를 대상으로 새로운 Person형 포인터 객체 생성 : Park -> PartTimeStudent 클래스 내부의 Person 멤버 를 가리키고..

[열혈 C++ 프로그래밍] (7) 상속의 이해

상속의 이해 상속 서론 상속 문법 protected선언, 상속 형태 상속 조건 상속 서론 B클래스가 A클래스를 상속하게 되면 B클래스가 객체를 생성할 때, 객체 내부에 A클래스 멤버도 존재 상속의 필요 이유 : 프로그램에 기능 추가 -> 객체의 추가 작성, 변수의 추가 작성 등 보수 작업 필요 -> 연관된 일련의 클래스들에게 공통 규약을 적용시키기 위함 -> 프로그램의 확장성 저하 = 상속을 통해 문제 해결 상속의 대상 : 상위 클래스, 기초 클래스, 슈퍼 클래스, 부모 클래스 상속 클래스 : 하위 클래스, 유도 클래스, 서브 클래스, 자식 클래스 -> 유도 클래스의 생성자는 기초 클래스의 멤버를 초기화 해야하는 의무를 지님 -> 기초 클래스의 생성자를 명시적으로 호출하여 초기화를 진행(직접적인 초기화는..

[백준 C++] 단계별 문제풀이 2단계 <조건문>

단계별 문제풀이 2단계단계별 문제풀이 2단계는 조건문에 해당하는 단계입니다, 문제는 총 7문제 입니다. 1. 두 수 비교하기 [백준 C++] 단계별 문제풀이 2단계 두 수 비교하기 문제 풀이 결과 문제 풀이 #include using namespace std; int main() { int a, b = 0; cin >> a >> b; if (a > b) { couttiptapcoding.tistory.com 2. 시험 성적 [백준 C++] 단계별 문제풀이 2단계 시험 성적 문제 풀이 결과 문제 풀이 #include using namespace std; int main() { int nScore = 0; while(1) { cin >> nSco..

Study/Baek-Joon C++ 2024.01.24

[백준 C++] 단계별 문제풀이 2단계 < 2480 : 주사위 세개 >

주사위 세개 문제 풀이 결과 문제 풀이 #include #include using namespace std; int main() { int nDice[3]; cin >> nDice[0] >> nDice[1] >> nDice[2]; // 오름차순 정렬 (sort() : 배열, 배열 바로 다음 요소를 인자로) sort(nDice, nDice + 3); int nTotal; if (nDice[0] == nDice[1] && nDice[1] == nDice[2]) { nTotal = 10000 + nDice[0] * 1000; } else if (nDice[0] == nDice[1] || nDice[1] == nDice[2]) { nTotal = 1000 + nDice[1] * 100; } else { nTot..

Study/Baek-Joon C++ 2024.01.24

[백준 C++] 단계별 문제풀이 2단계 < 2753 : 윤년 >

윤년문제풀이결과문제 풀이#include using namespace std;int main() { int nYear = 0; while(1) { cin >> nYear; if (nYear 입력된 연도의 값이 유효한지를 체크하는 로직을 작성해주었고, 문제에도 표시되어 있는 윤년의 조건에 따라 입력된 값의 분기를 달리해주었습니다. 가정문과 AND 연산자, OR 연산자를 알면 해결할 수 있는 문제입니다. 결과

Study/Baek-Joon C++ 2024.01.24
반응형