C++ primer Class 7

3650 단어
클래스는 대상을 대상으로 프로그래밍하는 기초로 클래스를 사용하여 자신의 데이터 유형을 정의하면 문제 중의 각종 개념을 더욱 편리하게 해결하고 프로그램을 더욱 쉽게 작성하고 디버깅하며 수정할 수 있다.

7.1 추상적인 데이터 유형 정의

  • 클래스 내부의 함수를 정의할 때 은밀한 inline 함수입니다.
  • 클래스의 모든 구성원은 클래스의 내부에서 성명해야 하지만 구성원 함수체는 클래스의 내부나 외부에 정의할 수 있다.
  • 구성원 함수는this라는 추가 스텔스 인자를 통해 호출된 대상에 접근합니다.구성원 함수를 호출할 때, 이 함수를 요청하는 대상 주소로this를 초기화합니다.
  • 구성원 함수체는 클래스의 다른 구성원을 마음대로 사용할 수 있으며 이 구성원들이 나타나는 순서에 신경 쓸 필요가 없다.

  • 구조 함수


    컴파일러가 만든 구조 함수는 합성된 기본 구조 함수라고도 부른다. 합성된 기본 구조 함수 초기화 클래스의 데이터 구성원 규칙은 클래스 내의 초기 값이 존재할 때 이를 이용하여 구성원을 초기화하는 것이다.그렇지 않으면 기본적으로 구성원이 초기화됩니다.일반 클래스의 경우 일반적으로 고유의 기본 구조 함수를 정의합니다.
  • 컴파일러는 클래스에 어떠한 구조 함수도 포함되지 않은 것을 발견한 경우에만 기본 구조 함수를 생성할 수 있습니다.
  • 일부 클래스에 대해 합성된 기본 구조 함수는 잘못된 조작을 수행할 수 있습니다.
  • 어떤 때는 컴파일러가 일부 클래스를 기본 구조 함수로 합성할 수 없다.
  • 구조 함수에 반환 형식이 없습니다.

  • 카피부치와 분석


    클래스의 대상을 어떻게 초기화하는지 정의하는 것 외에 클래스는 복사, 값 부여, 대상을 소각할 때 발생하는 행위를 제어해야 한다.우리가 주동적으로 이 조작들을 정의하지 않을 때, 컴파일러가 우리를 대신해서 그들을 합성할 것이다.그러나 일부 종류는 합성 버전에 의존할 수 없다.클래스가 클래스 대상 이외의 자원을 분배해야 할 때, 합성된 버전은 종종 효력을 상실할 수 있다.

    7.2 액세스 제어 및 캡슐화


    클래스의 정의에는 0개 또는 여러 개의 액세스 설명자를 포함할 수 있으며 모든 액세스 설명자는 다음 구성원의 액세스 단계를 지정한다. 일반적으로 인터페이스의 일부로서 구조 함수와 일부 구성원 함수는public 설명자 다음에 정의해야 하고 데이터 구성원과 실현 부분의 함수는private 설명자 다음에 정의해야 한다.class와struct의 유일한 차이점은 기본 접근 권한이 다르다는 것입니다.

    7.3 클래스의 기타 특성


    유형 구성원, 클래스의 구성원의 클래스 내 초기값, 가변 데이터 구성원, 내연 데이터 구성원, 구성원 함수에서 *this로 되돌아오기, 클래스 유형과 유원류를 어떻게 정의하는지 등.

    클래스 멤버


    데이터와 함수 구성원을 정의하는 것 외에 클래스는 클래스에 있는 특정한 유형의 별명을 사용자 정의할 수 있다.클래스가 정의한 형식 이름은 다른 구성원과 마찬가지로 접근 제한이 있습니다.

    다른 구성원은 내연 함수로 한다


    클래스에서 일부 규모가 비교적 작은 함수는 내연 함수 두 가지 방식으로 정의된다. 1. 함수를 클래스의 내부에 직접 정의한다. 2. 함수를 클래스의 외부에 정의하고 현식적으로 inline을 사용한다.
  • const 구성원 함수가 인용 형식으로 *this를 되돌려주면, 그 되돌림 형식은 상수 인용입니다.
  • 실천에서 좋은 코드를 설계하면 항상 많은 작은 함수를 포함하고 이런 작은 함수를 호출함으로써 다른 함수의'실제'작업을 완성할 수 있다.

  • 클래스 유형

  • 한 클래스에 대해 말하자면 그 클래스의 구성원은 다른 어떤 클래스의 구성원과도 같지 않다.
  • 류의 성명: 불완전한 유형의 사용: 이런 유형을 가리키는 바늘이나 인용을 정의할 수도 있고, 완전하지 않은 유형을 매개 변수로 하거나 되돌아오는 함수를 정의할 수도 있다.

  • 우원


    하나의 클래스가 유원류를 지정하면 유원류의 구성원 함수는 비공식 구성원을 포함한 모든 구성원에 접근할 수 있습니다.
  • 또 다른 종류의 구성원 함수를 자신의 우원으로 할 수 있다.
  • 클래스가 한 그룹의 재부팅 함수를 우원으로 설명하려면 각각의 클래스에 대해 설명해야 한다.
  • 우원 관계는 전달성이 존재하지 않는다.모든 클래스는 자신의 유원류나 유원 함수를 제어하는 것을 책임진다.

  • 클래스의 역할 영역

  • 하나의 종류는 하나의 작용역
  • 이다.
  • 함수의 반환 유형은 일반적으로 함수 이름 앞에 나타나기 때문에 반환 유형은 클래스의 작용 영역 밖에 있다.
  • 이름 찾기 규칙: 우선 이름이 있는 곳에서 성명문을 빨리 찾기;외계 작용 찾기;오보

  • 구조 함수 재탐지

  • 구성원이const 또는 인용이라면 초기화해야 한다.구성원이 특정한 종류에 속하고 이 클래스가 구조 함수를 정의하지 않았을 때도 초기화해야 한다.
  • 구조 함수 초기값 사용: 하부 효율의 문제만이 아니다.다른 일부 데이터 구성원은 반드시 초기화되어야 한다.
  • 구성원 초기화 순서: 구조 함수 초기화 목록 값은 구성원을 초기화하는 데 사용되는 값을 설명하고 초기화의 구체적인 집행 순서를 한정하지 않는다.(가능한 한 순서대로 초기화하고 일부 구성원을 사용하여 다른 구성원을 초기화하는 것을 피한다)
  • 위탁구조 함수:
  • 기본 구조 함수의 역할: 대상이 기본적으로 초기화되거나 값이 초기화될 때 기본 구조 함수를 자동으로 실행합니다
  • 기본 초기화 발생:
  • 블록 역할 영역에서 초기 값이 비정상적인 변수나 그룹을 정의할 때 적용되지 않습니다.
  • 하나의 클래스 자체가 클래스 유형의 구성원을 포함하고 합성된 기본 구조 함수를 사용한다.
  • 클래스 유형의 구성원은 구조 함수 초기 값 목록에서 현시적으로 초기화되지 않았습니다.
  • 값 초기화 발생:
  • 수조를 초기화할 때 제공하는 초기값 수량은 수조의 크기보다 작다
  • 초기 값을 사용하지 않고 부분적인 정적 변수를 정의합니다
  • T()와 같은 표현식의 현식 요청값 초기화
  • 스텔스 유형 변환: 실제 호출된 구조 함수를 통해 구조 함수의 매개 변수 유형에서 클래스 유형으로 스텔스 변환하는 규칙을 정의할 수 있다.
  • string null_book="2132321";
    item.combine(null_book);// string combine 。
    
  • 스텔스 형식 변환은 한 걸음에 가능하며 explicit를 사용하여 스텔스 형식 변환을 막을 수 있습니다.
  • 글자값 상량류는 최소한constexpr구조 함수를 제공한다
  • 클래스의 정적 구성원

    좋은 웹페이지 즐겨찾기