C++ 삭제 기능

6417 단어 programmingnewscpp
새 버전의 C++17은 많은 새로운 기능을 도입했지만, 일부 기능은 삭제되거나 폐기되었다.😊
이러한 조치는 다음과 같습니다.
  • 추천하지 않는 연산자++ 삭제
  • 레지스터 삭제
  • 자동 변속기 해체
  • 삼각도
  • 던지기(유형 ID)
  • std:function
  • 의 분배기 지원
  • std::일원 함수를 가리키는 바늘과
    std::바늘이 이진 함수를 가리킨다
  • std:binder1st와 std:binder2nd
  • std::bind1st와 std::bind2nd
  • 추가 기능
  • 1. 추천하지 않는 연산자++ 삭제
    Postfix와prefix Increment (++) 표현식은 현재 bool 작업수에 무효입니다.pre-fix와post-fix 작업자 +는 bool 형식을 다시 불러오기 때문에, 이 두 가지 상황에서 bool 매개 변수의 반환값은true입니다.bool 형식은 전체 산술 형식을 지원하지 않습니다.C++98이 발표된 이래로 이런 변화는 줄곧 기다리고 있다.새 버전의 C++17에서는 더 이상 산술 유형으로 간주되지 않으며, 이 연산자는 이미 폐기되었다.
    선택:
    std::exchange는 대체 방법으로 사용할 수 있지만postfix 연산자가 유효한 용도를 가진 상황에서만 사용할 수 있습니다.교환 함수는 새 값으로 대상의 값을 대체하고 대상의 옛 값을 되돌려줍니다.
    2. 등록부 삭제
    C++11에서는 오래 전에 register 키워드가 사용되지 않았습니다.CPU는 레지스터에 이 변수를 저장하기 위해 키워드를 대량으로 사용해서 컴파일러가 최적화할 수 있도록 할 수 있다.그러나 컴파일러 은식do 최적화와 알림을 사용하는 경우는 드물다.따라서 새 버전에서register 키워드는 삭제됩니다. 비록 키워드는 미래 버전에 남아 있지만.syntax :
    register string s="Bye Bye register :)"
    
    선택:
    컴파일러가 자동으로 같은 작업을 완성하기 때문에 레지스터는 다른 선택이 없습니다.
    3. 자동 PTR 제거
    auto ptr 는 스마트 포인터를 생성하여 객체의 라이프 사이클을 처리하는 데 사용됩니다.이것은 그것이 가리키는 대상의 소유자입니다. 대상이 자동으로 소각될 때 ptr도 자동으로 소각됩니다.이 스마트 포인터는 복제 구조 함수에서 위탁 관리 대상의 소유권을 몰래 훔치고 오른쪽 매개 변수에서 복제 값을 얻는다.따라서 복사본은 원래 스마트 포인터 대상과 다르다.이러한 복제 의미 때문에 auto ptr는 CopyConstructible처럼 작동하지 않으므로 권장하지 않습니다.
    선택:
    auto ptr는 unique ptr로 쉽게 대체될 수 있고 unique ptr도 스마트 지침으로 유사한 작업 원리를 가지지만 안전성이 향상되었다.이것은 C++11에서 auto ptr의 직접적인 대체품으로 도입된 것입니다. 새로운 기능 (삭제기) 과 그룹에 대한 지원을 제공하고, 바늘의 소유자만 인용할 수 있기 때문입니다.따라서 unique ptr를 사용할 때 한 자원에 최대 한 개의 unique ptr만 있을 수 있으며, 삭제될 때 자원은 자동으로 성명됩니다.unique ptr를 복사하려고 하면 컴파일 중 오류가 발생합니다.Example :
     unique_ptr<T> p1 (new T);
     unique_ptr<T> p2 = p1; 
     // Error: can't copy unique_ptr
    
    4. 삼각도
    삼각도는 기본적으로 세 개의 문자로 구성된 그룹으로, 일부 문자를 대체하는 특수한 문자 서열이다.물음표 두 개로 표시하다.example :
    ??- produces ~
    ??= produces #
    ??/ produces \
    ??’ produces ^
    ??( produces [
    ??) produces ]
    ??! produces |
    ??< produces {
    ??> produces }
    그러나 주석 이전에 해석되기 때문에 최신 버전에서 삭제되기 때문에 많은 혼란이 발생할 수 있다.
    선택:
    C++17은 삼각도에 대체품을 제공하지 않았다. 왜냐하면 현대 키보드는 모든 기능을 가지고 있고 코드에 많은 오류가 발생했기 때문이다.

    5. 던지기(유형 ID)
    함수의 이상 규범에 유형 T가 열거되어 있다면, 이 함수는 이 유형의 이상을 던지거나 이 유형에서 파생된 유형을 던질 수 있습니다.이것은 동적 이상 규범의 비투매 버전입니다. 이 규범은 이미 버려졌고, 지금은 삭제되었습니다.그것은 이미 더욱 명확한 의미를 가진noexcept로 대체되었다.Syntax :
    throw(typeid, typeid, ...)
    example :
    void throwsInt(int x) throw(int) 
    {  
        cout<<"throw function replaced with noexcept :)";  
        if (x == 0) 
        { 
          throw 1;  
        }
    }  
    
    선택:
    위에서 말한 바와 같이, noexcept를 사용할 때,throw는 더욱 좋은 선택을 할 수 있다.이것은 함수가 이상 유형을 지정하지 않은 상태에서 이상을 던질 수 있는지 여부를 지정합니다.그러나 함수 호출이 오류를 던질 수 없을 때만 사용합니다. 그렇지 않으면 프로그램이 종료됩니다.
    6.std::function의 분배기 지원:
    몇 개의 구조 함수는 내부 메모리를 분배하는 데 사용할 분배기를 지정할 수 있습니다.std:function에도 분배기 파라미터를 받아들이는 구조 함수가 있지만 의미가 명확하지 않습니다. 또한 분배기를 형식을 지우는 상하문에 저장한 다음 이 분배기를 나중에 복원하여 분배 기간에 필요한 분배를 복제할 때 기술적 고장이 발생하도록 합니다.따라서 이 구조 함수는 C++17에서 다시 불러오는 것이 삭제됩니다.
    선택:
    분배기를 대체하는 C++에는 이런 기능이 없습니다.
    7.std::포인터는 1원 함수를 가리키고 std: 포인터는 2원 함수를 가리킨다.
    std::pointer to monary 함수, std::pointer to binary 함수 대상은 일원 함수 또는 이원 함수의 포장기 역할을 합니다.이 함수들은 구조 함수를 포함하는데, 이 구조 함수는 제공된 함수와 저장 함수를 호출하는 연산자 () 를 사용하여 일원 함수 대상을 가리키는 새로운 지침을 구성한다.
    선택:
    이 두 함수 std::function과 std::ref는 std::pointer to monary 함수와 std:pointer to binary 함수를 대체합니다.
    8.std::binder1st와 std::binder2nd:
    그것들은 매개 변수를 2진 함수에 연결하는 함수 대상이다.
    매개 변수의 값은 구성할 때 대상에게 전달되고 대상에 저장된다.operator () 를 통해 함수 대상을 호출할 때마다 저장된 값은 하나의 매개 변수로 전달되고, 다른 매개 변수는operator () 의 매개 변수로 전달됩니다.결과 함수 대상은 일원 함수다.
    1)binder1st: 첫 번째 인자를 대상 구조에 연결할 때 지정한 값입니다.
    2)binder2nd: 두 번째 인자를 대상 구조에 연결할 때 지정한 값입니다.
    선택:
    Lambdas, std: bind는 binder1st와 binder2nd의 두 가지 옵션 기능입니다.
    9.std::bind1st와 std::bind2nd:
    이 도움말 함수들은 std::binder1st 또는 std::binder2nd의 실례를 만들고, 후자는 주어진 매개 변수를 주어진 2진 함수 대상의 첫 번째 또는 두 번째 매개 변수에 연결합니다.그러나 C++11에 lambdas가 도입되면서 이런 기능들은 쓸모가 없어져 버려졌다.
    10 추가 기능:
  • 표준: mem fun t
  • 표준: mem fun1 t
  • 표준: const mem fun t
  • 표준: const mem funt
  • 표준: mem fun ref t
  • 표준: mem fun1 ref t
  • 표준: const mem fun ref t
  • std::const_mem_fun1_ref_t
  • 이 함수 대상은 매개 변수가 없거나 하나의 매개 변수만 있는 구성원 함수로 포인터를 포장합니다.호출할 구성원 함수는 조작부호()를 가리키는 바늘로 전달하는 클래스 실례로 호출할 구성원 함수는 호출할 구성원 함수를 가리키는 바늘로 전달하는 대상을 가리키고 후자는 인용으로 전달한다.매개 변수가 없거나 하나의 매개 변수만 있는 구성원 함수에 한정되며, 클래스 실례를 가리키는 바늘이나 인용을 처리하기 위해 서로 다른 함수와 함수 대상이 필요하기 때문에 사용하기를 추천하지 않습니다.
    선택:
    상기 함수의 대체 방법은 std:mem fn으로 임의의 수량 변수를 가진 구성원 함수를 처리할 수 있으며 대상의 인용이나 포인터뿐만 아니라 스마트 포인터도 처리할 수 있다.

    결론:
    C++는 간단명료하고 프로그래밍 속도가 빠르다.이 언어를 최신 버전으로 개선하고 오래된 버그 기능을 삭제하는 것이 필요하다.C++17의 특성을 업데이트하기 위해 수천 건의 건의가 있었다.낡은 기능들과 작별할 때가 되었다.😎
    잇닿다
    C++ 바위!😄

    좋은 웹페이지 즐겨찾기