내부에서 사용하는 객체에 대한 ‘핸들’을 반환하는 코드는 되도록 피하자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //점을 나타내는 클래스 class Point { public: void setX(int newVal); void setY(int newVal); }; //Rectangle에 쓰기 위한 점 데이터 struct RectData { Point ulhc; //ulhc = “좌측 상단(upper left – hand corner)” Point lrhc; //lrhc = “우측 하단(lower right – hand corner)” }; class Rectangle { private: std::tr1::shared_ptrpData; //tr1::shared_ptr..
캐스팅은 절약, 또 절약! 잊지 말자. 책에 있는 예제들은 소스 코드가 이해하기 힘든 관계로 퍼오거나 직접 만들었습니다. 하지만 책에 있는 예제들 전부 빼놓지 않고 넣어 놨습니다 우선 쉬운 예로 시작하다가 책의 예제로 이어 가겠습니다. 책에 있는 내용을 추가 한거라고 생각 하시면 됩니다. 복습 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81..
변수정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 변수 정의를 늦출수 있게 된것은 C++의 어디에서건 변수를 선언 할수 있게 만들어 줌으로써 생겨난 방법일것이다. 가장 큰 이유는 변수의 생성 대입 초기화 라는 작업이 일어날 필요가 없게 될 경우가 생기기 때문이다. 예를 들어서, 아주 큰 객체를 생성하여 대입하고 하고, 특정 함수를 작업하고, 다시 선언된 큰 객체를 사용하고 날려 버리는 작업이 있다고 했을때, 특정 함수에서 오류가 나서 이 객체를 쓰지도 못하게 되었다고 한다면 이해가 쉽게 갈것이다 예제 1 1 2 3 4 5 6 7 8 9 10 11 12 void main() { string encrypted; if(password.lengh() 결론 변수 정의는 늦출 수 있을 때까지 늦추자.
예외를 던지지 않는 SWAP에 대한 지원도 생각해 보자 타이틀 입력부분C++에서 SWAP 이란 두 객체의 값을 ‘맞바꾸기’한다는 것을 말함. 기존의 SWAP의 동작을 보면 1 2 3 4 5 6 7 8 9 10 11 12 13 namespace { void swap(int a,int b) { int temp; Temp = a; a = b; b = temp; } } cs 어김없이 동작을 하게 되어있습니다. 하지만 예외의 swap의 동작을 요구하는 swap도 있습니다. 예제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 26 27 28 class AA { public: private: int a,b,c; std::vectorv; }; c..
타입변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자 유리수가 선 객체일경우 operator를 사용하면 에러가 뜬다. 문제점 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 class Rational { public: Rational(int num = 0, int num1 = 1); //explicit붙이지 않는 이유는 int에서 Rational로의 암시적 변환을 허용하기위해… const Rational operator*(const Rational& rhs ) const; }; void main() { Rational Eighth(1, 8); Rational Ha..
맴버 함수보다는 비멤버 비프랜드 함수와 더 가까워지자 비 멤버함수로 구현한 것이 캡슐화 정도가 더 좋기 때문이다. 어떤 객체의 데이터에 접근할 수 있는 코드가 적을수록 캡슐화가 잘 되어 있는 것이라 할 수 있다. 외부에서 변경 불가능한 영역이 넓을수록 외부와 관계가 적으며, 그로인해 내부 구현이 바뀌더라도 외부에 많은 영향을 주지 않음. 멤버함수는 객체의 private영역까지 접근할 수 있다. 그러나 비멤버함수는 public영역 외에는 접근이 불가능하므로, 그 객체의 데이터에 직접적으로 접근할 여지가 줄어든다. 따라서 캡슐화가 멤버함수에 비하여 잘된 것이라 할 수 있음. 주의할 것은 이러한 비멤버함수의 이점은 비프렌드 함수일 때만 적용된다. 프렌드 함수는 접근권한이 멤버함수와 같으므로 캡슐화 정도도 똑같..
- Total
- Today
- Yesterday
- C++
- Windows
- C#
- 서귀포
- 디자인패턴
- Build
- Thread
- ReFS
- ip
- 암호화
- 패턴
- 성산블루버블
- 다이빙
- PowerShell
- OpenSource
- 제주도
- 블루버블
- 양파다이브
- 울릉도
- 현포다이브
- 리눅스
- 블루버블다이브팀
- 스쿠버다이빙
- Linux
- 서귀포블루버블
- C# 고급 기술
- DLL
- 윈도우
- 블루버블다이빙팀
- 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 | 31 |