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

분류 전체보기 105

[열혈 C++ 프로그래밍] (11) 연산자 오버로딩 2

연산자 오버로딩 2 대입 연산자의 오버로딩 배열의 인덱스 연산자 오버로딩 연산자 오버로딩1 연산자 오버로딩2 연산자 오버로딩3 대입 연산자의 오버로딩 대입 연산자 오버로딩 객체 간의 대입 연산은 대입 연산자의 호출로 이어짐 -> 직접 대입 연산자를 정의해주지 않으면 디폴트 대입 연산자 호출 -> 디폴트 대입 연산자는 멤버 대 멤버의 복사를 수행 a1 = a2; -> 일반적으로 객체 간 대입을 불가하지만 a1.operator=(a2)로 해석, 디폴트 연산자 호출 Point pos1(5,7); Point pos2 = pos1; -> 객체 간 복사(복사 생성자 호출) Point pos1(5,7); Point pos2(9,10); -> 대입 연산자 호출 문제점 : 동적 할당하는 경우, 같은 메모리 공간을 참조 ..

[열혈 C++ 프로그래밍] (10) 연산자 오버로딩 1

연산자 오버로딩 1 연산자 오버로딩 단항 연산자의 오버로딩 교환법칙 문제 해결 cout, cin, endl 연산자 오버로딩 하나의 연산자를 여러 의미로 사용할 수 있게 해주는 것 -> 객체 간 불가능한 연산을 사용자가 정의를 한 것을 토대로 객체 간 연산을 가능하게 만듬 p1.operator+(p2); -> p1 객체를 대상으로 p2를 인자로 함수를 호출 p1 + p2 => operator+(p1, p2); 주의점: 1. 연산자의 우선순위와 결합성을 불변 2. 매개변수의 디폴트값 설정 불가 3. 연산자의 순수 기능 변경 불가 -> ex) operator+() { num1*num2 } : 객체가 아닌 변수간 단순 덧셈 - Position 생성자와 operator-() 함수를 정의 - operator-() ..

[열혈 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..

PS/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..

PS/Baek-Joon C++ 2024.01.24