2CHAECHAE 학교생활/객체지향프로그래밍(C++)19 [ 객체지향프로그래밍(C++) 13주차 ① ] [ 13주차 - 1 ] 예외 처리 예외처리는 프로그램을 실행할 때 에러가 발생하면 그 에러에 대해서 내 컴퓨터에서 직접 처리해서 정상적으로 종료해주는 것이다. #include using namespace std try { // 에러 부분에 대해 감시하고자 하는 프로그램 부분을 포함 } catch( type1 arg ) { //예외 처리 //예외의 형이 어느 catch문을 사용할 것인가를 결정 } cathch(type2 arg) { } try 부분은 프로그램 실행 부분이다. 이 부분에서 예외( 에러 )가 발생하면 발생하는 에러의 종류에 따라 여러 곳에서 catch가 가능하다. 예외가 어느 type이냐에 따라 1개의 예외 처리 부분에 catch가 된다. 에러가 발생하더라도 프로그램이 catch를 해서 에러 .. 2022. 6. 4. [ 객체지향프로그래밍(C++) 12주차 ② ] [ 12주차 - 2 ] 일반 함수 일반 함수 : 여러 가지 자료형에 적용될 일반적인 연산들 일반 함수를 생성함으로써 데이터의 종류와는 독립적으로 알고리즘의 특성을 정의할 수 있다. 일반 함수가 정의되면 컴파일러는 함수가 실행될 때 사용되는 자료형을 위한 정확한 코드를 자동으로 만들어낸다. 일반 함수 키워드는 template를 사용함으로써 생성된다. template ret-type func-name( parameter-list ) { ... } type : 함수에 의해 사용될 자료형을 나타내는 이름 #include using namespace std; template void swapargs(X& a, X& b) { X temp; temp = a; a = b; b = temp;.. 2022. 5. 29. [ 객체지향프로그래밍(C++) 12주차 ① ] [ 12주차 -1 ] 가상 함수와 다형성 파생형에 대한 포인터 부모 클래스 포인터는 부모 클래스에서 상속된 어떠한 클래스의 객체도 가리킬 수 있지만 자식 클래스에 대한 포인터를 이용하여 부모 클래스형의 객체를 접근할 수 없다. 부모 클래스 포인터를 이용하여 자식 클래스에 의해 정의된 원소들을 접근하려면, 그것을 자식 클래스의 포인터로 형변환 시켜야한다. 즉, 부모 클래스에서 상속받은 객체들은 부모 클래스에 존재하는 포인터로 접근할 수 있지만 자식 클래스에서 새로 생성된 객체들은 부모 클래스에 존재하는 포인터로 바로 접근할 수 없어 자식 클래스를 붙여줘서 자식클래스의 포인터형으로 형변환을 해 접근해야한다. 포인터는 부모 형과 관련하여 증가되거나 감소될 수 있다. 포인터가 부모 클래스의 객체를 가리키고 있다.. 2022. 5. 22. [ 객체지향프로그래밍(C++) 11주차 ① ] [ 11주차 - 1 ] 비멤버 연산자 함수 비멤버 함수를 사용하여 클래스를 위한 연산자를 중복할 수 있다. 프렌드 함수를 포함하는 비멤버 함수들은 this 포인터를 가질 수 없으므로 프렌드가 연산자를 중복하기 위해 사용될 때, 이항 연산자가 중복되면 피연산자가 명시적으로 전달되고, 단항 연산자가 중복될 때 하나의 피연산자만 전달된다. 비멤버 함수를 사용하여 중복할 수 없는 연산자들은 =, (), [], -> 이다. 연산자 중복이 필요한 경우 비멤버함수를 구현할 때는 반드시 friend로 지정해줘야한다. class three_d { private: int x, y, z; public: three_d() { x = y = z = 0; } three_d(int i, int j, int k) { x = i; y.. 2022. 5. 16. [ 객체지향프로그래밍(C++) 10주차 ② ] [ 10주차 - 2 ] 연산자 중복 연산자 중복 사용 이유 : 연산자의 의미를 특정한 클래스를 위해 정의하는 것을 허용 type classname::operator#(arg_list){ operation relative to the class } # : 중복 사용할 연산자 type : 명시된 연산에 의해 반환되는 값의 형 연산자 중복이 필요한 이유 : 정수, 실수 덧셈을 위해 사용하는 + 연산자를 객체끼리의 덧셈에 적용하고 싶은 경우, 클래스에 +에 대한 연산자 중복을 정의해야한다. 해당 클래스 객체끼리 연산을 수행하고 싶은 경우, 해당 연산자에 대해 중복을 명시해놓으면 객체끼리 연산을 할 수 있게 된다. = 같은 치환 연산자는 같은 클래스의 객체들끼리는 치환이 허용된다. =은 명시가 되어있지만 다른 치.. 2022. 5. 16. [ 객체지향프로그래밍(C++) 10주차 ① ] [ 10주차-1 ] 객체의 반환 클래스 형을 반환하는 것으로 함수를 선언한다. 정상적인 return문을 사용하여 그 형의 객체를 반환한다. 객체가 함수에 의해 반환될 때 임시 객체가 자동으로 생성되며, 이때 생성된 임시 객체가 반환값을 저장한다. 실제 이 임시 객체가 함수에 의해 반환되며, 반환된 후에는 소멸된다. 이 임시 객체가 만들어질 때 복사 생성자가 실행이 되며, 소멸할 때는 소멸자가 실행된다. 복사 생성자가 정의되어 있으면, 정의된 복사 생성자가 실행되고, 정의되어 있지 않으면 디폴트 복사 생성자가 실행된다. #include #include using namespace std; class sample { private: char s[80]; public: void show() { cout 2022. 5. 9. [ 객체지향프로그래밍(C++) 9주차 ② ] [ 9주차 - 2 ] 객체 치환하기 1. 두개의 객체가 같은 형일 경우 치환이 가능 2. 객체가 치환될 때 비트 단위로 복사된다. 3. 한 객체를 다른 객체에 치환하는 것은 두 객체 간 동일한 데이터를 갖는다는 것일 뿐 두 객체는 여전히 별개이다. → 한 객체의 데이터를 수정하는 것은 다른 객체의 데이터에 아무런 영향을 미치지 않는다. #include using namespace std; class myclass { private: int a, b; public: void setab(int i, int j) { a = i, b = j; } void showab(); }; void myclass::showab() { cout 2022. 5. 1. [ 객체지향프로그래밍(C++) 9주차 ① ] [ 9주차 -1 ] friend 함수 멤버가 아닌 함수가 클래스의 전용 멤버를 접근할 수 있도록 허용하는 것으로 함수를 클래스의 freind로 선언한다. 함수의 프로토타입을 클래스 선언의 public 구역에 포함하고 앞에 friend 키워드를 쓴다. 같은 클래스에 있는 멤버들은 private 변수에 접근할 수 있지만 클래스 밖에서 외부 접근 하는 경우는 private 변수에 접근할 수 없다. 즉 private 변수에 외부 접근을 허용해주는 것이 friend이다. 사용 이유 : ⓐ 연산자를 중복하는데 유용 ⓑ I/O 함수의 생성을 단순화 ⓒ 둘 또는 그 이상의 클래스들이 프로그램의 다른 부분과 상대적으로 연관될 수 있는 멤버들을 포함한다. class cl{ public: friend void frnd(cl.. 2022. 5. 1. [ 객체지향프로그래밍(C++) 7주차 ② ] [ 7주차 - 2 ] 클래스에 배열 선언하기 클래스 객체들도 배열로 선언할 수 있다. resolution은 width와 height가 low, medium, high 중 무엇인지 enum형을 선언해주고 3 값중 하나를 저장해준다. #include using namespace std; enum resolution { low, medium, high }; class display { private: int width; int height; resolution res; //width, height가 low,medium,high인지 확인 public: void set_dim(int w, int h) { width = w; height = h; } void get_dim(int& w, int& h) { w = w.. 2022. 4. 16. 이전 1 2 3 다음