<div>유모게시판이라는게 좀 가벼워야 하는데 그렇게 약간의 장난으로 게시물을 올린것이 여기까지 왔네요.</div> <div><br></div> <div>3판은 번역판을 가지고 있지 않아서 영문 pdf로 대충 읽었고 최신 4판도 대충 읽었습니다.</div> <div><br></div> <div><span style="font-size:9pt;line-height:1.5;">3판의 포인터, 배열 관련 내용이 4판의 7장으로 옮겨 졌구요, 짧게 읽어서 그냥 마지막 advice만 번역할께요.</span></div> <div><br></div> <div>1. 포인터를 단순하고 복잡하지 않도록 사용할 것</div> <div>2. 사소하지 않는(복잡한) 포인터 산술 연산은 피할 것.</div> <div>3. 배열의 경계 밖에 쓰는 것을 주의.</div> <div>4. 다 차원 배열을 피할 것. 대신 적당한 컨테이너를 정의할 것.</div> <div>5. 0이나 NULL 대신 nullptr 키워드를 사용할 것.( 3판에서는 NULL을 사용하라고 함)</div> <div><br></div> <div>6. C-Stype의 배열보다 vector, array 컨테이너, 그리고 valarray 과 같은 컨테이너를 사용할 것.</div> <div>7. NULL 문자로 끝나는 char 형 문자열 대신 std::string을 사용할 것</div> <div>8. 백슬러쉬의 복잡한 사용을 가진 리터럴 문자열 대신에 "Raw String"을 사용하라.</div> <div>9. 평범한 참조(reference) 타입에 const 사용을 선호할 것.</div> <div>10 포워딩과 move semantics 사용해서 rvalue 참조를 사용할 것. &&가 rvalue 참조 선언. move semantics는 데이터를 할당하거나 명령어 등의 의미를 수행하는 것으로 생각됨.</div> <div><br></div> <div>11. 핸들 클래스 안에 소유권을 나타내는 포인터를 유지.</div> <div>12. void*형은 로우 레벨이 아니면 피하라.</div> <div>13. const 포인터와 const 참조형을 사용하라.</div> <div>14. "no object"가 합리적인 선택이라는 것을 제외하고 인수로서 포인터 대신 레퍼런스 타입을 선호하라. </div> <div><br></div> <div><br></div> <div>7장 만 읽어서 전체적인 내용을 말씀 드릴 수 없지만 간단한 소감을 말씀드리면 c++에 있는 문법이나 자료형을 사용하고 웬만하면 c-style을 버려라.</div> <div>입니다. </div> <div><br></div> <div>암튼 저자가 <span style="font-size:9pt;line-height:1.5;">그럼 c-style 대신할 c++ 엔 무엇이 있냐?</span></div> <div>7장에서는 배열을 대신할 array 컨테이너가 있다. NULL(아직 까지 컴파일러에서 0으로 정의된 것이 많은데 대신) nullptr 키워드가 있다.</div> <div>백슬러시 많이 들어간 문장은 복잡하니까 Raw String을 줄께.</div> <div>rvalue 첨이지? 이거 좋아.</div> <div><br></div> <div>이외에 const와 참조자(레퍼런스)를 많이 권하고 있습니다. </div> <div><br></div> <div><span style="font-size:9pt;line-height:1.5;">간접적으로 void*형에 관한 내용을 읽으면서</span><span style="font-size:9pt;line-height:1.5;"> </span>제가 느끼기에 c-style 버리는 것이 핵심인 것 같은데 가장 큰 이유는 제가 추측하기로는 이게 약점이자 강점인데 c언어가 강문법 언어가 아니기 때문입니다. <span style="font-size:9pt;line-height:1.5;">모호한 문법을 버리는 것이 핵심이고 문법적으로 안전한 c++ 사용을 권하는 것 같습니다.</span></div> <div><br></div> <div>참고로 rvalue swap 예제르 올려 봅니다.</div> <div><br></div> <div> <div>template<class T></div> <div>void swap(T& a, T& b)</div> <div>{</div> <div> T tmp {static_cast<T&&>(a)};</div> <div> a = static_cast<T&&>(b);</div> <div> b = static_cast<T&&>(tmp);</div> <div>}</div></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.