본문 바로가기

반응형

Programming/C++ 3

(19)
[C++] 15-01. 예외처리 예외상황과 예외처리의 이해 문법적 오류가 아닌, 프로그램 논리에 맞지 않은 오류를 뜻한다. [프로그램 실행중 발생문제] 발생 -> 발견 -> 처리 #include using namespace std; int main_1(void) { int num1, num2; cout > num1 >> num2; cout
[C++] 12-01. 대입연산자 오버로딩 대입연산자 오버로딩은 객체간 대입연산 #include using namespace std; class First { private: int num1, num2; public: First(int n1 = 0, int n2 = 0) :num1(n1), num2(n2) { } void ShowData() {cout
[C++] 10-01. 연산자 오버로딩의 이해와 유형 연산자 오버로딩의 이해와 유형 객체를 기본자료형처럼 연산하기 위한 수단 Point 클래스의 객체 p1, p2를 가지고, p1+p2연산은 불가능하다 하지만, operator+로 정의한다면 두가지 형태의 함수로 존재 가능하다. 멤버 함수=> 연산자의 왼쪽에 있는 피연산자를 대상으로 함수 호출 p1.operator+(p2) 전역 함수 => operator+(p1, p2) 연산자 오버로딩 함수 오버로딩 : fct(), fct(int)는 인자에 따라 호출되는 함수가 달라진다 연산자 오버로딩 : 3+4, p1+p2는 피연산자에 따라 연산이 달라진다. pos1 + pos2 ↓ ↓ ↓ pos1.operator+(pos2); -> 멤버대 멤버의 덧셈 진행 멤버함수의 연산자 오버로딩 #include using namesp..
[C++] 09-02. 다중상속 다중상속 둘 이상의 클래스를 상속하는 형태로, 득보다 실이 많아 문제가 많으므로 자주 사용하지 않는 문법이다 다중상속을 하더라도 하나의 특성을 강하게 띄므로 IS-A 관계표현이 힘들어 부모의 특성을 단순히 재활용하는 경우에만 사용한다. //다중 상속 #include using namespace std; class BaseOne { public: void SimpleFuncOne() { cout
[C++] 09-01. 멤버함수와 가상함수의 동작 원리 멤버함수의 동작 #include using namespace std; class Data { private: int data; public: Data(int num):data(num) {} void ShowData() { cout
[C++] 08-03. 가상 소멸자 상.동.다 상속관계에서 생성자에서 동적할당을 할경우에 기초클래스의 멤버도 동적할당을 하기때문에 [다형성 특성] 모든 소멸자가 호출되기 위해서는 소멸자를 정의할 때 virtual로 선언. #include using namespace std; class First { private: char* strOne; public: First(const char* str) { strOne = new char[strlen(str) + 1]; } virtual ~First() { cout
[C++] 08-02. 가상함수 [급여관리 시스템 3단계] A클래스 : fct함수 ↑ B클래스 : fct함수, fct2함수 [함수 오버라이딩: 매개변수형이 동일한 함수를 생성] int main(void) { B obj; obj.fct(); //B의 fct 함수 호출, 오버라이딩에 의해 A의 fct함수가 가려짐 //만약에 B에 fct함수가 없다면, A의 fct함수 호출 } 포인터 관점 접근 int main(void) { B* b=new B(); b->fct(); //b의 fct함수 호출 A* a=b; //A의 클래스 포인터에 b를 저장 //b가 가리키는 모든 대상은 a를 상속하는 객체이며 //a의 포인터로 그 객체를 가리킬 수 있다. B* b=a; //컴파일 에러 발생 //a가 가리키는 대상은 a객체이거나 a가 상속하는 다른 클래스의 객체인데 //그 대상은 b객체..
[C++] 08-01. 객체 포인터의 참조관계 [급여관리 시스템 2단계] 객체의 주소 값을 저장 하는 객체 포인터 변수 "C++에서, AAA형 포인터 변수는 AAA 객체 또는 AAA를 직접 혹은 간접적으로 상속하는 모든 객체를 가리킬 수 있다." 즉, 객체의 주소 값을 저장할 수 있다 class Student : public Person { ... }; class PartTimeStudent : public Student { ... }; Person

반응형