이 관용구는 무엇이며 언제 사용해야합니까? 어떤 문제가 해결됩니까? C ++ 11을 사용할 때 관용구가 변경됩니까? 많은 곳에서 언급되었지만, "무엇입니까"라는 질문과 대답은 없었으므로 여기에 있습니다. 다음은 이전에 언급 한 장소의 일부 목록입니다. 가장 좋아하는 C ++ 코딩 스타일 관용구 : 복사 스왑 C ++에서 생성자 및 = 연산자 오버로드 복사 : …
수업이 있습니다. class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } }; 다음과 같은 코드를 비활성화하려면 어떻게 수정해야합니까? SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( ); 다음과 같은 코드 만 허용하십시오. SymbolIndexer & ref_symbol_indexer_ = …
복사 생성자 이후 MyClass(const MyClass&); 및 = 연산자 오버로드 MyClass& operator = (const MyClass&); 거의 동일한 코드, 동일한 매개 변수, 반환시에만 차이가있는 경우 둘 다 사용할 수있는 공통 기능을 가질 수 있습니까?
멤버가 초기화되지 않은 일부 구조체를 복사하는 것이 유효합니까? 나는 그것이 정의되지 않은 행동이라고 생각하지만, 그렇다면 초기화되지 않은 멤버를 구조체에 남겨 두는 것은 매우 위험합니다. 그래서 표준에 허용되는 것이 있는지 궁금합니다. 예를 들어, 이것이 유효합니까? struct Data { int a, b; }; int main() { Data data; data.a = 5; Data …
과거에는 컬렉션을 안전하게 복사한다고 말했습니다. public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); 또는 public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); 그러나 이러한 "복사"생성자, 비슷한 정적 생성 방법 및 스트림은 실제로 안전하며 규칙은 어디에 지정되어 있습니까? 안전하다는 말은 합리적으로 백업되고 결함이 없다고 가정 …