Cpp--클래스의 조합
한 클래스에 다른 클래스의 대상이 내장되어 있다면, 이 클래스의 대상을 만들 때, 그 중의 내장 대상도 자동으로 생성됩니다.내장 대상은 조합류의 대상의 일부이기 때문에 조합류의 대상을 구성할 때 기본 데이터 유형의 구성원을 초기화해야 할 뿐만 아니라 내장 대상의 구성원도 초기화해야 한다.
조합 클래스 구조 함수 정의(성명이 아님)의 일반적인 형식은 다음과 같습니다.
클래스 이름: 클래스 이름(메타데이터 테이블): 메타데이터 1(메타데이터 테이블), 메타데이터 2(메타데이터 테이블),...{클래스 초기화}
여기서 "내감 객체 1(메모 테이블), 메모 객체 2(메모 테이블),..."포함된 객체의 초기화를 완료하는 데 사용할 수 있는 초기화 목록이 됩니다.사실 일반적인 데이터 구성원도 이렇게 초기화할 수 있다. 바로 이곳의 내장 대상을 모두 일반적인 데이터 구성원으로 바꾸고 뒤에 있는 인삼표를 일반적인 데이터 구성원의 변수 인삼으로 바꾸는 것이다. 예를 들어 Point::::Point xx, int yy): X(xx), Y(yy) {}, 이 정의는 어떻게 이해해야 합니까?바로 우리가 Point류의 대상을 구성할 때 실참으로 xx와 yy를 초기화한 다음에 xx의 값으로 Point류의 데이터 구성원 X를 초기화하고 y의 값으로 데이터 구성원 Y를 초기화하는 것이다.
하나의 조합류의 대상을 설명할 때, 그 자체의 구조 함수는 호출될 뿐만 아니라, 그 안에 포함된 대상의 구조 함수도 호출될 것이다.그렇다면 이 구조 함수들의 호출은 어떤 순서입니까?먼저 앞에서 말한 초기화 목록에 따라 내장 대상이 조합 클래스의 성명에 나타난 순서에 따라 내장 대상의 구조 함수를 순서대로 호출한 다음에 본 클래스의 구조 함수의 함수체를 집행한다.예를 들어 다음 예에서Distance 클래스의 p1과 p2는 p1의 구조 함수를 먼저 호출한 다음에 p2의 구조 함수를 호출하는 것이다.Point p1, p2 때문에먼저 성명한 p1이고 나중에 성명한 p2입니다.마지막으로Distance 구조 함수를 실행하는 함수체입니다.
조합류의 대상을 설명할 때 대상의 초기 값이 지정되지 않으면 무형삼의 구조 함수를 자동으로 호출하고, 내장 대상을 구성할 때도 대응하는 내장 대상의 무형삼의 구조 함수를 호출합니다.분석 함수의 집행 순서는 구조 함수와 정반대이다.
class DateTimeType{ //
DateType date; // DateType date
TimeType time;
public:
DateTimeType (int y0=1,int m0=1,int d0=1,int hr0=0,int mi0=0,int se0=0);
DateType &getDate(){return date;} // data
DateType &getTime(){return time;} // time
void incrementSecond(int s);
void inputDateTime();
void printDateTime();
};
보입니다.각 사용자 정의 DateTimeType 클래스 객체에는 항상 하나의 DateType 클래스 객체(객체 구성원)와 하나의 TimeType 클래스 객체(객체 구성원)가 포함됩니다.그들은 전체와 부분의 관계에 속한다.
DateTimeType을 사용할 때 주의해야 한다. 첫째, 구조 함수와 분석 함수의 실행 순서와 DateTimeType 클래스 구조 함수에 대한 책임을 주의해야 한다. 포함된 모든 대상 구성원의 초기화에 대해 책임을 져야 한다.둘째, DateTimeType 클래스 객체를 통해 객체 구성원의 공유 구성원 함수(또는 공유 데이터 구성원)를 호출할 때 다음과 같은 호출 방식을 사용해야 합니다.
공유된 클래스 구성원 함수인 getDate와 getTime을 설정한 것은 클래스 외의 주 함수와 같은 클래스의 개인 데이터 구성원인date와time를 사용하는 데 편리함을 제공합니다. 그렇지 않으면 클래스 외의 개인 데이터 구성원에 직접 접근할 수 없습니다.또한 두 구성원 함수는 모두 인용으로 되돌아오는 대상을 하나의 독립 변수로 사용할 수 있도록 한다. (왼쪽 값 등으로 사용할 수 있다.)
유형이 일치하지 않기 때문에 다음 두 가지 값은 허용되지 않습니다.
<객체 멤버가 속한 클래스의 객체>=<그룹 클래스 객체>;
<그룹 클래스 대상>=<대상 구성원이 속한 클래스의 대상>;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.