본문 바로가기

c, c++/c++로 시작하는 객체지향 프로그래밍14

16.1~16.4, 16.6~ 예외 처리 16.2) 예외 처리 개요컴파일 상에 문제가 생기는 것이 아니라 런타임 중 일부 코드에 문제가 있는 것을 예외라고 합니다. 이것은 프로그래머가 처리해줄 수 있는 문제입니다. 이런 경우는 제외하고 실행해주세요. 같은 명령을 하는 것이라고 생각합시다.정수(int)를 0으로 나누거나 a[2] 같이 범위를 벗어난 접근 제어자를 사용할 경우 등이 있습니다.#include using namespace std;int main() { cout > number1 >> number2; try { if (number2 == 0) throw number1; cout 16.3 예외 처리의 장점예외 처리를 하면 프로그램을 종료할 필요 없이 예외 발생을 전달받을 수 있다는 장점이 있습니다. 라이브러리 함수같은 경우 오류를 .. 2024. 6. 18.
14.1~ 연산자 오버로딩 연산자 오버로딩 1. 연산자 오버로딩이란c++의 문자열 연산은 어떻게 구현한 것일 까? 연산자는 실제로는 클래스 안에서 정의된 함수이다. 이들 함수는 operator 키워드 다음에 실제 연산자를 붙인 이름으로 지정한다. 아래의 분수를 연산하는 예제를 보며 구현 방식을 공부해보자.2. Rational 실수 연산자 오버로딩 #ifndef RATIONAL_H#define RATIONAL_H#include #include using namespace std;//분수 계산 + - * / 비교//최대공약수를 활용해 약분할 것class Rational {private: int numerator; //분자 int denominator; //분모 static int gcd(int n, int d) { //Ratio.. 2024. 6. 18.
13.7~)이진 입출력 13.7)이진 입출력 ios::binary 모드로 이진 입력과 출력을 하루 있습니다. 이전 포스트에서 배운 텍스트 파일 입출력은 메모장이나 텍스트 탐색기로 열수 있지만 이진 파일은 그 파일에 따라 특별한 프로그램으로 열어야 사람의 눈으로 읽을 수 있습니다. 실제 이진 파일을 메모장으로 열면 메모장의 논리로는 제대로 값을 읽어오지 못하기 때문에 가비지 값으로 가득찬 파일을 보게 됩니다.하지만 이진 파일은 텍스트 파일이 저장되기 위해 문자 - >이진수 변환 과정을 가지는 것과 달리 바로 저장되기 때문에 성능면에서 우수합니다.또, 저장되는 방식도 다릅니다. 예를 들어 10진수 199를 저장할 때 텍스트 파일은 먼저 ,'1', '9', '9'를 각각 문자로 인식하고 각 문자를 아스키코드의 숫자로 변환합니다. (.. 2024. 5. 24.
13.1~ 13.5)파일 입력과 출력 13.1) 들어가기변수나 배열, 객체에 저장된 데이터는 휘발성 데이터로 프로그램이 종료되면 모두 사라집니다. 프로그램 안에서 생성된 데이터를 영구히 저장하리 위해서는 하드디스크같이 비휘발성 데이터를 저장하는 저장매체에 파일로 저장해야 합니다.c++에서는 ifstream, ofstream, fstream 클래스에 있는 함수를 사용하여 파일로부터 데이터를 읽거나 쓸 수 있습니다.모두 fstream을 include하여 사용할 수 있고 ifstream은 읽기, ofstream은 쓰기, fstream은 읽고 쓰기를 할 수 있는 클래스입니다. c++에서는 데이터의 흐름을 스트림(stream)이라고 이야기하는 데 예를 들어 데이터가 프로그램쪽으로 흐르면 입력 스트림(input stream), 데이터가 프로그램으로부터.. 2024. 5. 24.
15.5~15.9) 상속과 "다형성" 15.5 함수 재정의기본 클래스에서 정의된 함수는 파생 클래스에서 재정의될 수 있습니다.//GeometricObject.cppstring GeometricObject::toString() const { return "Geometric Object";}//Circle.cppstring Circle::toString() const{ return "Circle object";}//Rectangle.cppstring Rectangle::toString() const { return "Rectangle object"; }#include "GeometricObject.h"#include "Circle.h"#include "Rectangle.h"#include //1)다른 생성자호출로 Circle객체, R.. 2024. 5. 9.
15.1~15.4, 15.8) 상속 15.1) 상속(inheritance)객체지향 프로그래밍에서는 기존 클래스로부터 새로운 클래스를 정의할 수 있으며, 이를 상속이라고 합니다. 15.2) 기본 클래스와 파생 클래스상속을 이용하면 일반적인 클래스에서 몇 가지 property나 behavior를 더해 특별한 클래스를 만들 수 있습니다. 기본클래스(base class); 부모클래스(parent class), 상위 클래스(super class)에서 상속받은 파생 클래스(derived class);자식 클래스(child class), 하위 클래스(sub class)를 만들 수 있습니다. 부모 클래스가 자식클래스보다 더 상위 클래스이지만 자식 클래스가 부모 클래스의 코드를 포함한 코드들을 가지고 있기 때문에 자식 클래스의 크기가 부모 클래스의 크기보.. 2024. 5. 2.