클래스의 구조 함수와 분석 함수 상해

3890 단어 면접 문제

1:류의 구조 함수


1. 구조 함수 정의 클래스의 구조 함수는 클래스의 특수한 구성원 함수로 클래스의 새로운 대상을 만들 때마다 실행된다.구조 함수의 명칭은 클래스의 명칭과 완전히 같으며, 어떤 종류도 되돌려주지 않으며,void도 되돌려주지 않습니다.구조 함수는 일부 구성원 변수의 초기 값을 설정하는 데 사용할 수 있습니다.구조 함수는 주로 대상을 위해 공간을 분배하고 초기화하는 데 쓰인다.2. 성질(1) 구조 함수의 이름은 클래스 이름과 같아야 한다(2) 구조 함수는 임의의 유형의 매개 변수가 있을 수 있지만 되돌아오는 유형을 지정할 수 없다.시스템 내부에서 사용되는 은밀한 반환 값이 있습니다.(3) 구조 함수는 특수한 구성원 함수로 함수체는 클래스 안에 쓸 수도 있고 클래스 밖에 쓸 수도 있다.(4) 구조 함수는 한 클래스에서 여러 개의 매개 변수의 개수나 매개 변수의 유형이 다른 구조 함수를 정의할 수 있다.(5) 구조 함수는 공유 함수로 성명되지만 다른 구성원 함수처럼 현저하게 호출될 수 없고 대상을 정의하는 동시에 호출된다.  3.인스턴스
#include 
 
using namespace std;
 
class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line();  //  
 
   private:
      double length;
};
 
//  , 
Line::Line(void)
{
    cout << "Object is being created" << endl;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
double Line::getLength( void )
{
    return length;
}
//  
int main( )
{
   Line line;
 
   //  
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.
Object is being created
Length of line : 6

파라미터를 가진 구조 함수 기본 구조 함수는 아무런 파라미터도 없지만 필요하면 구조 함수도 파라미터를 가지고 있을 수 있습니다.이렇게 하면 객체를 작성할 때 객체에 초기 값이 지정됩니다. 다음 예와 같습니다.
#include 
 
using namespace std;
 
class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line(double len);  //  
 
   private:
      double length;
};
 
//  , 
Line::Line( double len)
{
    cout << "Object is being created, length = " << len << endl;
    length = len;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
double Line::getLength( void )
{
    return length;
}
//  
int main( )
{
   Line line(10.0);
 
   //  
   cout << "Length of line : " << line.getLength() <

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.
Object is being created, length = 10
Length of line : 10
Length of line : 6

초기화 목록을 사용하여 필드 초기화

Line::Line( double len): length(len)
{
    cout << "Object is being created, length = " << len << endl;
}
 :
Line::Line( double len)
{
    length = len;
    cout << "Object is being created, length = " << len << endl;
}
  C,  X、Y、Z  , , , , :
C::C( double a, double b, double c): X(a), Y(b), Z(c)
{
  ....
}

2:류의 분석 함수


1. 분석 함수의 정의 클래스의 분석 함수는 클래스의 특수한 구성원 함수로 생성된 대상을 삭제할 때마다 실행된다.분석 함수의 명칭은 클래스의 명칭과 완전히 같다. 단지 앞에 파도호 (~) 를 접두사로 붙였을 뿐, 어떤 값도 되돌려주지 않고, 어떤 인자도 가지고 있지 않다.분석 함수는 프로그램 (예를 들어 파일 닫기, 메모리 방출 등) 에서 벗어나기 전에 자원을 방출하는 데 도움이 된다.
2. 성질(1) 분석 함수는 구조 함수와 이름이 같지만 앞에 파도호(~)를 붙여야 한다.(2) 분석 함수는 매개 변수도 없고 되돌아오는 값도 없고 다시 불러올 수 없다.따라서 한 클래스에 하나의 분석 함수만 있을 수 있다.(3) 대상을 취소할 때 컴파일링 시스템은 자동으로 분석 함수를 호출한다.3. 실례
#include 
 
using namespace std;
 
class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line();   //  
      ~Line();  //  
 
   private:
      double length;
};
 
//  , 
Line::Line(void)
{
    cout << "Object is being created" << endl;
}
Line::~Line(void)
{
    cout << "Object is being deleted" << endl;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
double Line::getLength( void )
{
    return length;
}
//  
int main( )
{
   Line line;
 
   //  
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.
Object is being created
Length of line : 6
Object is being deleted

좋은 웹페이지 즐겨찾기