728x90
반응형

c++-faq 14

C++ 컴파일 / 링크 프로세스의 작동 원리

질문 : 컴파일 / 링크 프로세스는 어떻게 작동합니까? 컴파일 및 연결 프로세스는 어떻게 작동합니까? (참고 : 이것은 Stack Overflow의 C ++ FAQ에 대한 항목입니다.이 양식으로 FAQ를 제공하는 아이디어를 비판하고 싶다면이 모든 것을 시작한 메타에 게시 할 수 있습니다. 이 질문은 FAQ 아이디어가 처음 시작된 C ++ 채팅룸 에서 모니터링되므로 아이디어를 제안한 사람들이 답변을 읽을 가능성이 큽니다.) 답변 C ++ 프로그램의 컴파일에는 세 단계가 포함됩니다. 전처리 : 전처리 기는 C ++ 소스 코드 파일을 가져와 #include , #define 및 기타 전 처리기 지시문을 처리합니다. 이 단계의 출력은 전 처리기 지시문이없는 "순수한"C ++ 파일입니다. 컴파일 : 컴파일러는 전..

rvalues, lvalues, xvalues, glvalues, prvalues 사용 방법

질문 : rvalues, lvalues, xvalues, glvalues 및 prvalues는 무엇입니까? C ++ 03에서 표현식은 rvalue 또는 lvalue 입니다. C ++ 11에서 표현식은 다음과 같을 수 있습니다. rvalue lvalue xvalue glvalue prvalue 2 개의 카테고리가 5 개의 카테고리가되었습니다. 이 새로운 범주의 표현은 무엇입니까? 이러한 새 범주는 기존 rvalue 및 lvalue 범주와 어떤 관련이 있습니까? C ++ 0x의 rvalue 및 lvalue 범주가 C ++ 03의 경우와 동일합니까? 이러한 새로운 카테고리가 필요한 이유는 무엇입니까? WG21 신들은 우리를 단순히 인간을 혼동시키려는 것일까 요? 답변 이 문서는 짧은 소개가 아닐 것 같습니다...

[C++] private, public 및 protected 상속의 차이점

질문 : 개인, 공용 및 보호 상속의 차이점 C ++ 에서 public , private 및 protected 상속의 차이점은 무엇입니까? 내가 찾은 모든 질문은 특정 사례를 다룹니다. 답변 이 질문에 답하기 위해 먼저 회원의 접근자를 제 말로 설명하고 싶습니다. 이미 알고있는 경우 "다음 :"제목으로 건너 뜁니다. 내가 알고있는 세 가지 접근자가 있습니다 : public , protected 및 private . 허락하다: class Base { public: int publicMember; protected: int protectedMember; private: int privateMember; }; Base 인식하는 모든 것은 Base publicMember 가 포함되어 있다는 것도 알고 있습니다...

C ++ 11에서 T && (&&)가 의미하는 것

질문 : C ++ 11에서 T && (이중 앰퍼샌드)는 무엇을 의미합니까? T&& var 와 같은 변수를 선언 할 때 이중 앰퍼샌드를 발견했습니다. 우선이 짐승은 무엇이라고 불릴까요? Google에서 이와 같은 구두점 검색을 허용하기를 바랍니다. 정확히 무엇을 의미합니까? 언뜻보기에는 이중 참조 (예 : C 스타일 이중 포인터 T** var )로 보이지만 사용 사례를 생각하는 데 어려움을 겪고 있습니다. 답변 rvalue 참조 (표준 제안 문서)를 선언합니다. 다음은 rvalue 참조에 대한 소개입니다. 다음은 Microsoft의 표준 라이브러리 개발자 중 한 명이 작성한 rvalue 참조에 대한 환상적인 심층 분석입니다. 주의 : MSDN의 링크 된 문서 ( "Rvalue 참조 : VC10의 C ++ ..

C ++ 11 rvalue 및 이동 의미 혼란 (return 문)

질문 : C ++ 11 rvalue 및 이동 의미 혼란 (return 문) rvalue 참조를 이해하고 C ++ 11의 의미를 이동하려고합니다. 이 예제의 차이점은 무엇이며 어떤 것이 벡터 복사를하지 않을까요? 1번째 예제 std::vector return_vector(void) { std::vector tmp {1,2,3,4,5}; return tmp; } std::vector &&rval_ref = return_vector(); 2번째 예제 std::vector&& return_vector(void) { std::vector tmp {1,2,3,4,5}; return std::move(tmp); } std::vector &&rval_ref = return_vector(); 3번째 예제 std::vec..

C ++ 11에서 람다식이란?

질문 : C ++ 11에서 람다식이 란 무엇입니까? C ++ 11에서 람다식이 란 무엇입니까? 언제 사용합니까? 도입 전에는 불가능했던 문제의 종류는 무엇입니까? 몇 가지 예와 사용 사례가 유용 할 것입니다. 답변 std::for_each 및 std::transform 과 같은 유용한 일반 함수가 포함되어있어 매우 편리합니다. 안타깝게도 특히 적용하려는 펑터 가 특정 기능에 고유 한 경우 사용하기가 매우 번거로울 수 있습니다. #include #include namespace { struct f { void operator()(int) { // do something } }; } void func(std::vector& v) { f f; std::for_each(v.begin(), v.end(), f);..

C ++ 17의 새로운 기능

질문 : C ++ 17의 새로운 기능은 무엇입니까? C ++ 17은 이제 기능이 완전하므로 큰 변화가 없을 것입니다. C ++ 17에 대한 수백 개의 제안이 제출되었습니다. C ++ 17에서 C ++에 추가 된 기능은 무엇입니까? "C ++ 1z"를 지원하는 C ++ 컴파일러를 사용할 때 컴파일러가 C ++ 17로 업데이트 할 때 사용할 수있는 기능은 무엇입니까? 답변 언어 기능: 템플릿 및 일반 코드: 클래스 템플릿에 대한 템플릿 인수 추론 함수가 템플릿 인수를 추론하는 방식과 마찬가지로 이제 생성자는 클래스의 템플릿 인수를 추론 할 수 있습니다. http://wg21.link/p0433r2 http://wg21.link/p0620r0 http://wg21.link/p0512r0 template 모든 ..

C ++ 표준 int, long 유형의 크기 기준

질문 : C ++ 표준은 int, long 유형의 크기를 무엇으로 지정합니까? 기본 C ++ 유형의 크기에 대한 자세한 정보를 찾고 있습니다. 아키텍처 (16 비트, 32 비트, 64 비트)와 컴파일러에 따라 다르다는 것을 알고 있습니다. 하지만 C ++에 대한 표준이 있습니까? 32 비트 아키텍처에서 Visual Studio 2008을 사용하고 있습니다. 내가 얻는 것은 다음과 같습니다. char : 1 byte short : 2 bytes int : 4 bytes long : 4 bytes float : 4 bytes double: 8 bytes char , short , int , long , double , float (및 내가 생각하지 않은 다른 유형)의 크기를 나타내는 신뢰할 수있는 정보를 찾..

C ++ 프로그래머가 'new'사용을 최소화해야하는 이유

질문 : C ++ 프로그래머가 'new'사용을 최소화해야하는 이유는 무엇입니까? std :: list 을 사용할 때 std :: string 으로 스택 오버플로 질문 메모리 누수를 우연히 발견 했으며 주석 중 하나는 다음 과 같이 말합니다. 사용을 중지 new 너무 많이. 당신이 한 곳에서 새로운 것을 사용한 이유를 볼 수 없습니다. C ++ 에서 값별로 객체를 생성 할 수 있으며 이는 언어 사용의 큰 장점 중 하나입니다. 힙에 모든 것을 할당 할 필요는 없습니다. 자바 프로그래머처럼 생각하지 마세요. 그게 무슨 뜻인지 잘 모르겠습니다. 왜 객체는 가능한 한 자주 C ++의 값으로 생성되어야하며 내부적으로 어떤 차이가 있습니까? 내가 답을 잘못 해석 했습니까? 답변 널리 사용되는 메모리 할당 기술에는 자..

확실한 C ++ 의 가이드 및 목록

질문 : 확실한 C ++ 책 가이드 및 목록 이 질문은 매년 출판되는 수십 권의 나쁜 C ++ 책 중에서 몇 가지 진주를 수집하려고합니다. 인터넷에서 찾아 볼 수있는 자습서에서 이동 중에 자주 선택되는 다른 프로그래밍 언어와 달리 잘 작성된 C ++ 책을 공부하지 않고 C ++를 빠르게 선택할 수있는 사람은 거의 없습니다. 이것을하기에는 너무 크고 복잡합니다. 사실, 너무 크고 복잡해서 아주 나쁜 C ++ 책 이 많이 있습니다. 그리고 우리는 나쁜 스타일에 대해 말하는 것이 아니라 눈에 띄게 명백한 사실적 오류를 자랑하고 엄청나게 나쁜 프로그래밍 스타일을 홍보하는 것과 같은 것입니다. 허용 된 답변을 편집하여 양질의 책 과 대략적인 기술 수준 을 제공하십시오. 가급적 C ++ 채팅방 에서 추가 내용을 논..

C ++에서 포인터 변수와 참조 변수의 차이점

질문 : C ++에서 포인터 변수와 참조 변수의 차이점은 무엇입니까? 참조가 구문 적 설탕이라는 것을 알고 있으므로 코드를 읽고 쓰기가 더 쉽습니다. 그러나 포인터 변수와 참조 변수의 차이점은 무엇입니까? 답변 포인터를 다시 할당 할 수 있습니다. int x = 5; int y = 6; int *p; p = &x; p = &y; *p = 10; assert(x == 5); assert(y == 10); 참조는 다시 바인딩 될 수 없으며 초기화시 바인딩되어야합니다. int x = 5; int y = 6; int &q; // error int &r = x; 포인터 변수는 고유 한 ID를 가지고 있습니다. 단항 & sizeof 연산자로 측정 할 수있는 특정 공간입니다. 참조에서 이러한 연산자를 사용하면 참조가..

"STL"과 "C ++ 표준 라이브러리"의 차이점

질문 : "STL"과 "C ++ 표준 라이브러리"의 차이점은 무엇입니까? 누군가가 가져온 이 기사를 주장 (내가 지나친 의역있어)가 STL의 용어는 SGI의 STL에서 촬영 한 부분 대신 전체 C ++ 표준 라이브러리를 참조 오용 나의 관심. (...) STL (SGI에서 디자인 된)을 사용하는 사람이 거의 없다는 사실에도 불구하고 "STL"을 의미합니다. C ++ 표준 라이브러리의 일부는 STL의 일부를 기반으로하고 있으며, 많은 사람들 (여러 작성자 및 악명 높은 오류가있는 cplusplus.com 포함)이 여전히 "STL"이라고 부르는 부분입니다. 그러나 이것은 정확하지 않습니다. 실제로 C ++ 표준은 "STL"을 언급하지 않으며 둘 사이에 내용 차이가 있습니다. (...) "STL"은 SGI S..

C ++ 식별자에서 "_"을 사용하는 규칙

질문 : C ++ 식별자에서 "_" 을 사용하는 규칙은 무엇입니까? C ++에서는 멤버 변수에 어떤 종류의 접두사를 사용하여 멤버 변수의 이름을 지정하여 로컬 변수 나 매개 변수가 아니라 멤버 변수라는 사실을 나타내는 것이 일반적입니다. MFC 배경에서왔다면 아마도 m_foo 사용할 것입니다. 나는 또한 가끔 myFoo C # (또는 아마도 .NET)은 _foo 밑줄 만 사용하는 것이 좋습니다. 이것이 C ++ 표준에서 허용됩니까? 답변 규칙 (C ++ 11에서는 변경되지 않음) : 구현 매크로 사용을 포함하여 모든 범위에서 예약됩니다. 밑줄로 시작하고 바로 뒤에 대문자가 오는 식별자 인접한 밑줄 ("_")을 포함하는 식별자 글로벌 네임 스페이스에 예약 됨 :. 밑줄로 시작하는 식별자 또한 std 네임 ..

C ++에서 POD 유형이란?

질문 : C ++에서 POD 유형은 무엇입니까? 이 용어 POD 유형을 몇 번 보았습니다. 무슨 뜻이에요? 답변 POD 는 Plain Old Data를 의미합니다. 즉, 생성자, 소멸자 및 가상 멤버 함수가없는 class struct 또는 키워드 class로 정의되었는지 여부)입니다. POD에 대한 Wikipedia의 기사 는 좀 더 자세히 설명하고 다음과 같이 정의합니다. C ++의 Plain Old Data Structure는 PODS 만 멤버로 포함하고 사용자 정의 소멸자, 사용자 정의 복사 할당 연산자 및 멤버 포인터 유형의 비 정적 멤버가없는 집계 클래스입니다. C ++ 98 / 03에 대한이 답변 에서 더 자세한 내용을 찾을 수 있습니다. C ++ 11은 POD를 둘러싼 규칙을 변경하여 크게 ..

728x90
반응형