자원관리 클래스의 복사 동작에 대해 진지하게 고찰하자. 객체 복사에서는 컴파일러가 제공하는 디폴트 함수(복사 생성자, 대입연산자등)가 자신이 원하는 동작을 못한다면 직접 설계하여야 한다. 힙 기반 자원 관리의 스마트 포인터는 힙에 생기지 않는 자원의 처리로는 부적합하다. 이 경우 자원 관리 클래스를 만들어야 할 필요성이 있다. 예제 Mutex 타입의 동기화 객체의 잠금과 해지 클래스 생성 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 void lock(Mutex *pm); // pm이 가리키는 뮤텍스의..
자원 관리에는 객체가 그만! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //여러 형태의 투자를 모델링한 클래스 계통의 최상위 클래스 class Investment { . . . }; /*Investment 클래스 계통에 속한 클래스의 객체를 동적 할당하고 그 포인터를 반환합니다. 이 객체의 해제는 호출자 쪽에서 직접 해야 합니다.*/ Investment* createInvestment(); void f() { //팩토리 함수를 호출합니다. Investment *pInv = createInvestment(); // pInv를 사용합니다. // TODO // 객체를 해제합니다. delete pInv; } Colored by Color Scripter cs 1...
객체의 모든 부분을 빠짐없이 복사하자 객체의 안쪽 부분을 캡슐화된 객체 지향 시스템 중 설계가 잘 된 것들을 보면 복사 생성자와 복사 대입 연산자 두가지가 있고, 이 둘을 통틀어 객체 복사 함수라고 부른다. 컴파일러가 생성한 복사 함수를 쓰지 않고 개발자가 직접 객체 복사 함수를 선언한다면 구현한 복사 함수가 확실히 틀린 경우에도 알려주지 않는다. 예제 1 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 void logcall(const std::string& funcName); //로그 기록내용을 만든다. class Customer { public: Customer(const Customer& rhs); Customer& operat..
Operator= 에서는 자기대입에 대한 처리가 빠지지 않도록 하자. 타이틀 입력부분C++ 연산자 operator= 에서는 자기대입에 대한 처리가 빠지지 않도록 하자. 자기대입(중복참조,자기참조)은 같은 객체를 참조 할 수 있는 위험이 있다. 자기참조,자기대입(Self Assignment)이란? 객체가 자신에 대해 대입 연산자를 적용하는 것을 말합니다. ex)중복참조: 여러 곳에서 하나의 객체를 참조하는 상태 예제 1 2 3 4 5 6 Widget& Widget::operator=(const Widget& _rhs) { delete pb; //현재의 비트맵 사용을 중지합니다. pb = new Bitmap(*_rhs.pb); //이제 rhs의 비트맵을 사용하도록만듭니다 return *this; //*thi..
- Total
- Today
- Yesterday
- 디자인 패턴
- cpu 정보
- 대칭키
- 네트워크 카드 이름
- 네트워크 정보
- 암호화
- StringFormat
- bit
- 패턴
- 최우림
- 백터
- IV
- 디지털서명
- C
- 네트워크설정
- cpu 점유율
- string
- RSA
- process
- C#
- 블럭암호화
- 인젝션
- 디자인패턴
- C#.NET
- 블록암호화
- cpu 이용률
- 해시
- C# 고급 기술
- 네트워크 연결
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |