일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- OS
- 리트코드
- python
- web
- 리액트
- 고득점Kit
- dp
- 코테연습
- LeetCode
- 배열
- Level1
- Doitvue.js입문
- javascript
- 프로그래밍
- CS
- 카카오
- typescript
- 백준
- 웹프로그래밍
- 동적계획법
- sql
- 프로그래머스
- C++
- VUE
- Level2
- react
- Level3
- 파이썬
- Medium
- 자바스크립트
- Today
- Total
목록객체지향프로그래밍 (C++) (25)
외부 변수, 함수 참조 //test.cpp int e = 1000 void Func() { cout
구조적 예외 처리 // 원소의 값을 바꾼다 void DynamicArray::SetAt(int index, int value) { // 인덱스의 범위가 맞지 않으면 예외를 던진다 if (index = GetSize()) throw "Out of Range!!!"; arr[index] = value; } // 크기가 10인 배열 객체를 만든다. DynamicArray arr(10); try { arr.SetAt(5, 100); arr.SetAt(8, 100); arr.SetAt(10, 100); } catch(const char* ex) { cout
class Obj{ protected: string s public: Obj(const string& as){ s = as; } };
virtual function 부모 메소드 앞에 virtual 키워드를 사용하면 부모객체 포인터에서 업캐스트했을 때에도 오버라이드한 자식 메소드를 실행할 수 있다. (자식 객체 포인터에 부모 객체를 다운캐스트 했을 경우에도 ) class Shape{ public: void Move(double x, double y); virtual void Draw(); // pure virtual function Shape(); Shape(double x, double y); protected: double _x, _y; }; void Shape::Draw() const{ cout
2개 이상의 부모 클래스를 동시에 상속하는 경우 class UnderGradStudent { public: string name; string dept; void Warn() { } }; class DormStudent { public: string building; int roomNo; void Warn() { } }; class UnderGrd_DormStudent : public UnderGradStudent, public DormStudent { public: }; int main() { UnderGrd_DormStudent s1; s1.name = "김철수"; s1.dept = "cse"; s1.building = "1st"; s1.roomNo = 1024; s1.DormStudent::Warn..
자식과 부모 대입 연산 자식에 부모 대입 불가, 포인터나 레퍼런스도 마찬가지임 (다운캐스트) 부모에 자식 대입 가능, 포인터나 레퍼런스도 마찬가지임 (업캐스트)Children c; Parents p; c = p; //에러 p = c; //가능 p.override() // 부모의 메소드가 실행됨 다운캐스트 특수 케이스 업캐스트 후에 다운 캐스트는 가능 HTMLWriter hw; DocWriter* pdw = &hw; //upcast HTMLWriter* phw = (HTMLWriter*)pdw; //downcast
void filtering(string s) { string bads[] = { "병신","바보"}; bool flag = false; for (auto bad : bads) { if (s.find(bad) < s.size()) flag = true; } if (flag) cout
void f(int a){ if(a>=0) return f(a/8) cout