C++ 인터뷰 질문

2800 단어 cpp


생성자란?
생성자는 클래스의 객체를 초기화하는 클래스의 멤버 함수입니다. C++에서 Constructor는 객체(클래스의 인스턴스)가 생성될 때 자동으로 호출됩니다.
세 가지 유형의 생성자가 있습니다.
  • 기본 생성자: 매개변수/인수가 없는 생성자

  • #include <iostream> 
    using namespace std; 
    class A { 
    public: 
        int a, b; 
        // Default Constructor 
        A() 
        { 
            a = 1; 
            b = 2; 
        } 
    }; 
    
    int main() 
    { 
        // Default constructor called automatically 
        // when the object is created 
        A obj; 
        cout << "a: " << obj.a << endl 
             << "b: " << obj.b; 
        return 1; 
    } 
    


    산출:
    : 1
    b: 2
    컴파일러는 기본 생성자를 초기화하지 않아도 자동으로 기본 생성자를 제공합니다.
  • 매개변수화된 생성자: 매개변수/인수가 있는 생성자

  • #include <iostream>
    using namespace std;
    class ParamA {
    private:
    int b, c;
    public:
    ParamA (int b1, int c1)
    {
    b = b1;
    c = c1;
    }
    int getX ()
    {
    return b;
    }
    int getY ()
    {
    return c;
    }
    };
    int main ()
    {
    ParamA p1(10, 15);
    cout << "p1.b = " << p1. getX() << ", p1.c = " << p1.getY();
    return 0;
    }
    
    


    출력: p1.b = 10, p1.c = 15
  • 복사 생성자: 복사 생성자는 같은 클래스의 다른 개체를 사용하여 개체를 초기화하는 멤버 함수입니다.

  • #include<iostream>
    using namespace std;
    class test
    {
    private:
    int x;
    public:
    test(int x1)
    {
    x = x1;
    }
    test(const test &t2)
    {
    x = t2.x;
    }
    int getX()
    {
    return x;
    }
    };
    int main()
    {
    test t1(7); // Normal constructor is called here
    test t2 = t1; // Copy constructor is called here
    cout << "t1.x = " << t1.getX();
    cout << "t2.x = " << t2.getX();
    return 0;
    }
    
    


    t1.x = 7
    t2.x = 7

    생성자는 일반 멤버 함수와 어떻게 다른가요?

    생성자는 다음과 같은 점에서 일반 함수와 다릅니다.

    생성자는 클래스 이름과 동일한 이름을 가집니다.
    생성자에는 반환 유형이 없습니다.
    생성자는 객체가 생성될 때 자동으로 호출됩니다.
    생성자를 지정하지 않으면 C++ 컴파일러는 기본 생성자를 생성합니다.

    C++의 생성자 오버로딩
    클래스에 이름은 같지만 인수 목록이 다른 두 개 이상의 생성자를 생성자 오버로딩이라고 합니다.

    전달된 인수의 수와 유형에 따라 생성자가 호출됩니다. 개체를 생성하는 동안 컴파일러가 호출해야 하는 생성자를 알 수 있도록 인수를 전달해야 합니다.

    소멸자란 무엇입니까?
    소멸자는 객체를 파괴하거나 삭제하는 멤버 함수입니다.
    개체가 범위를 벗어나면 소멸자 함수가 자동으로 호출됩니다.
    (1) 기능 종료
    (2) 프로그램 종료
    (3) 지역 변수를 포함하는 블록이 종료
    (4) 삭제 연산자가 호출됩니다.

    소멸자는 앞에 물결표(~)가 붙은 클래스와 이름이 같습니다.
    소멸자는 인수를 취하지 않으며 아무 것도 반환하지 않습니다.
    노트
    컴파일러는 클래스에 자체 소멸자를 작성하지 않으면 기본 소멸자를 생성합니다. 기본 소멸자는 클래스에 동적으로 할당된 메모리나 포인터가 없으면 제대로 작동합니다. 클래스가 클래스에 할당된 메모리에 대한 포인터를 포함하는 경우 클래스 인스턴스가 소멸되기 전에 메모리를 해제하는 소멸자를 작성해야 합니다. 메모리 누수를 방지하려면 이 작업을 수행해야 합니다.

    C++ 기반 인터뷰 질문을 더 추가할 예정입니다. 인터뷰에서 흥미로운 C++ 질문을 접했다면 제안해 주세요 :)

    좋은 웹페이지 즐겨찾기