《C++primer》 독서노트 1

2834 단어
데이터 추상화와 패키지화의 두 가지 장점:
1. 클래스 내부에 무의식적으로 대상 상태를 파괴할 수 있는 사용자 수준의 오류가 발생하는 것을 피한다.
2. 시간의 추이에 따라 수요 변화나 결함 보고서에 따라 유형 실현을 보완할 수 있다.사용자와 코드를 바꿀 필요가 없다.
const 구성원 함수에서 *this 반환
const 구성원 함수에서 클래스 대상을 가리키는 일반 인용을 되돌릴 수 없습니다.const 구성원 함수는 *this를 const 인용으로만 되돌려줍니다.
12.3 클래스 역할 영역
클래스 역할 영역 이외에 구성원은 대상이나 지침을 통해 각각 구성원 접근 조작부호를 사용할 수 있습니다.또는 -> 에 액세스합니다.조작부호 왼쪽은 각각 하나의 클래스 대상이나 하나의 클래스 대상의 지침이다.
클래스에서 형식 이름을 먼저 정의해야만 데이터 구성원의 유형이나 구성원 함수의 반환 형식이나 참조 형식으로 사용할 수 있습니다.
12.4 구조 함수
class Sales_item
{
public:
          Sales_item() const;//error     
};

구조 함수 초기화 목록: 초기화 목록을 생략하고 구조 함수 체내에서 초기화하는 것은 가능하다.
구조 함수는 두 단계로 나뉘어 실행된다. (1) 초기화 단계(2) 일반적인 계산 단계.계산 단계는 구조 함수 함수에 의해 체중의
모든 문장이 완성되다.
일부 구성원은 구조 함수 초기화 목록에서 초기화해야 한다. 이런 구성원에 대해 구조 함수체에서 그들에게 값을 부여하는 것은 작용하지 않는다. 기본 구조 함수가 없는 클래스 유형 구성원과const나 인용 유형의 구성원은 어떤 종류든 구조 함수의 초기화 목록에서 초기화해야 한다.
2. 구성원 초기화의 순서: 구성원 성명이 일치하는 순서에 따라 구조 함수 초기화 목록을 작성하는 것은 좋은 생각이며, 가능한 한 구성원을 사용하여 다른 구성원을 초기화하는 것을 피한다.
클래스 유형의 데이터 구성원의 초기화:
클래스 유형의 구성원을 초기화할 때, 구성원 함수에 실제 참조를 지정하여 전달하는 구조 함수를 지정하려면, 이 유형의 임의의 구조 함수를 사용할 수 있다.
기본 구조 함수: 대상을 정의할 때 초기화식을 제공하지 않으면 기본 구조 함수를 사용합니다.
하나의 클래스가 구조 함수를 정의하지 않았을 때만 컴파일러가 자동으로 기본 구조 함수를 생성할 수 있습니다.
클래스가 내장되거나 복합 유형의 구성원을 포함한다면, 클래스는 합성된 기본 구조 함수에 의존해서는 안 되고, 자신의 구조 함수를 정의하여 이 구성원들을 초기화해야 한다.
구조 함수에 의해 정의된 스텔스 변환 억제:explicit 키워드로
초기화 클래스 구성원의 세 가지 주요 단점을 표시합니다.
1. 요구류의 전체 데이터 구성원은 모두 공공이다
2. 초기화된 임무를 프로그래머에게 맡기면 잊어버리기 쉽다.
3. 구성원을 추가하거나 삭제하려면 모든 초기화를 찾아서 올바르게 업데이트해야 합니다.
12.5 유원: 클래스가 비공식 구성원의 접근권을 지정한 함수나 클래스에 부여할 수 있도록 합니다.프렌드로 시작해.
유원 성명은 이미 명명된 클래스나 비구성원 함수를 외곽 작용역에 도입할 수 있으며, 또한 유원 함수는 클래스의 내부에서 정의할 수 있으며, 이 함수의 작용역은 클래스 정의를 둘러싼 작용역으로 확장될 수 있다.
12.6 static 클래스 구성원.
static 구성원 함수에this 포인터가 없습니다. 소속 클래스의static 구성원에 직접 접근할 수 있습니다.비static 구성원에 직접 접근할 수 없습니다.
static 구성원은 그 어떠한 대상의 구성 성분이 아니기 때문에 static 구성원 함수는const로 성명할 수 없습니다.구성원 함수를const라고 성명하는 것은 이 함수에 속하는 대상을 수정하지 않겠다고 약속하는 것이다.마지막으로static 진원 함수도 허함수로 성명할 수 없습니다.
static 구성원은 클래스 외부에서 정의해야 한다. 일반 데이터 구성원과 달리 static 구성원은 클래스의 구조 함수를 통해 초기화되는 것이 아니라 정의가 초기화되어야 한다.
소결: 클래스는 C++의 가장 기본적인 특징으로 응용 프로그램의 수요에 맞게 새로운 유형을 정의할 수 있으며 프로그램을 더욱 짧고 쉽게 수정할 수 있다.
데이터 추상화란 데이터와 함수 구성원을 정의하는 능력을 가리키며, 광전은 일반적인 방문에서 클래스 구성원을 보호하는 능력을 가리킨다. 그들은 모두 클래스의 기본이며, 구성원 함수 정의 클래스의 인터페이스는 클래스의 실현에 사용되는 데이터와 함수를 private로 설정하여 클래스를 봉인한다.
클래스는 구조 함수를 정의할 수 있다. 그들은 특수한 구성원 함수이다. 클래스의 대상을 어떻게 초기화하는지 제어하고 구조 함수를 다시 불러올 수 있다. 모든 구조 함수는 모든 데이터 구성원을 초기화해야 한다. 초기화 목록에는 이름-값 쌍이 포함되어야 한다. 그 중의 이름은 하나의 구성원이고 값은 이 구성원의 초기 값이다.
클래스는 비공개 구성원에 대한 접근권을 다른 클래스나 함수에 부여하고, 다른 클래스나 함수를 우원으로 설정해서 접근권을 부여할 수 있습니다.
클래스도mutable이나static 구성원을 정의할 수 있습니다.mutable 구성원은 영원히 const가 될 수 없습니다. 그 값은 const 구성원 함수에서 수정할 수 있으며,static 구성원은 함수나 데이터로 클래스 형식의 대상에 독립되어 존재할 수 있습니다.

좋은 웹페이지 즐겨찾기