C++ 소멸자란 무엇입니까? 출력이 생성자와 반대입니까?
소멸자(소멸자) 생성자와 달리 객체가 범위를 벗어나면(예: 객체가 위치한 함수가 호출된 경우) 시스템이 자동으로 소멸자를 실행합니다. 소멸자는 종종 "정리" 작업을 수행하는 데 사용됩니다(예를 들어 객체를 생성할 때 new를 사용하여 메모리 공간을 엽니다. 메모리 공간은 종료하기 전에 소멸자에서 삭제와 함께 해제되어야 합니다).
소멸자의 이름도 클래스 이름과 동일해야 합니다. 단, ~stud()와 같이 함수 이름 앞에 비트 부정 문자 ~를 추가하여 소멸자 이름과 구별한다는 점만 다릅니다. 건설자. 매개변수를 사용할 수 없으며 반환 값(void 유형 포함)도 없습니다. 소멸자는 하나만 있을 수 있으며 오버로드될 수 없습니다. 사용자가 소멸자를 작성하지 않으면 컴파일 시스템은 자동으로 기본 소멸자를 생성합니다(소멸자가 사용자 정의된 경우에도 컴파일러는 항상 소멸자를 합성하며, 소멸자가 사용자 정의된 함수인 경우 컴파일러는 먼저 사용자 정의 소멸자와 실행 중에 합성 소멸자), 어떤 작업도 수행하지 않습니다. 따라서 많은 단순 클래스는 명시적 소멸자를 사용하지 않습니다. 생성자와 소멸자를 포함하는 C++ 프로그램입니다.
#include
#include
using?namespace?std;
class?stud?// 클래스 선언
{
private:?//?Private 부분
int?num;
char?name[10] ;
char?sex?;
공개:?//공개 부분
stud(int?n,char?nam[],char?s? )?//생성자
{
num?=?n;
strcpy?(이름,?nam);
성별 ?=?s;
}
~stud(?)?//소멸자
{
cout?< " Stud?has?been?destructe!"?<
}
void?display (? )?//Member 함수, 객체의 데이터 출력
{
cout<<"num:?"< cout<<"이름:?"<<이름< cout<<"섹스:?"< } }; int?main(?) { stud?stud1(10010,?"왕리",?'f') ,?stud2(10011,?"Zhang-fun",?'m');?//두 개의 객체 생성 stud1.display(?);?//학생 1의 데이터 출력 stud2.display(?);?//학생 2의 데이터를 출력 }//메인 기능 종료와 동시에 Stud1과 Stud2 객체는 "cleaned" 및 cleaning은 소멸자를 호출하여 수행됩니다. 출력 결과: num:?10010 name:?Wang-li sex:?f 번호:?10011 이름:?장펀 섹스:?m 스터드?has?been?destructe! 스터드는?파괴되었나요?