Cpp--클래스의 조합

2609 단어
클래스의 조합은 사실 한 클래스에 다른 클래스의 대상을 구성원으로 삽입한 상황을 묘사하는데 그들 간의 관계는 일종의 포함과 포함의 관계이다.간단하게 말하면, 한 클래스 중의 몇몇 데이터 구성원은 다른 클래스의 대상이다.이전의 강좌에서 우리가 본 클래스의 데이터 구성원은 모두 기본 데이터 형식이나 사용자 정의 데이터 형식이다. 예를 들어 int,float 형식이나 구조체 형식이다. 이제 우리는 데이터 구성원도 클래스 유형일 수 있다는 것을 알게 되었다.
한 클래스에 다른 클래스의 대상이 내장되어 있다면, 이 클래스의 대상을 만들 때, 그 중의 내장 대상도 자동으로 생성됩니다.내장 대상은 조합류의 대상의 일부이기 때문에 조합류의 대상을 구성할 때 기본 데이터 유형의 구성원을 초기화해야 할 뿐만 아니라 내장 대상의 구성원도 초기화해야 한다.
조합 클래스 구조 함수 정의(성명이 아님)의 일반적인 형식은 다음과 같습니다.
클래스 이름: 클래스 이름(메타데이터 테이블): 메타데이터 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를 사용하는 데 편리함을 제공합니다. 그렇지 않으면 클래스 외의 개인 데이터 구성원에 직접 접근할 수 없습니다.또한 두 구성원 함수는 모두 인용으로 되돌아오는 대상을 하나의 독립 변수로 사용할 수 있도록 한다. (왼쪽 값 등으로 사용할 수 있다.)
유형이 일치하지 않기 때문에 다음 두 가지 값은 허용되지 않습니다.
<객체 멤버가 속한 클래스의 객체>=<그룹 클래스 객체>;
<그룹 클래스 대상>=<대상 구성원이 속한 클래스의 대상>;

좋은 웹페이지 즐겨찾기