자원관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 항목 13에서 가져온 예제 void main() { std::tr1::shared_ptr pInv(createInvestment()); // 투자금이 유입된 이후로 경과한 날수 int dayHeld(const Investment *pi); // 에러 int days = daysHeld(pInv); /* daysHeld함수는 Investment * 타입을 원하는데 std::tr1::shared_ptr타입의 객체를 넘기고 있음 std::tr1::shared_ptr을 Investment *로 변환하고 싶어짐 */ } Colored by Color Scrip..
자원관리 클래스의 복사 동작에 대해 진지하게 고찰하자. 객체 복사에서는 컴파일러가 제공하는 디폴트 함수(복사 생성자, 대입연산자등)가 자신이 원하는 동작을 못한다면 직접 설계하여야 한다. 힙 기반 자원 관리의 스마트 포인터는 힙에 생기지 않는 자원의 처리로는 부적합하다. 이 경우 자원 관리 클래스를 만들어야 할 필요성이 있다. 예제 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..
- Total
- Today
- Yesterday
- 백터
- 네트워크 연결
- 인젝션
- cpu 점유율
- bit
- 해시
- StringFormat
- 블록암호화
- 디자인 패턴
- RSA
- 디지털서명
- 네트워크 카드 이름
- C#.NET
- C# 고급 기술
- C
- cpu 정보
- string
- 네트워크 정보
- C++
- process
- C#
- 최우림
- 패턴
- IV
- 대칭키
- 블럭암호화
- 디자인패턴
- cpu 이용률
- 암호화
- 네트워크설정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |