C++ 일반적인 인터뷰 질문

2218 단어 cpp


이 키워드와 용도는 무엇입니까?

C++ 코드에서 자주 사용되는 매우 일반적인 개념입니다. 용도와 그것이 무엇인지 봅시다.
각 개체는 자체 데이터 멤버 복사본을 가져오고 모든 개체는 멤버 함수의 단일 복사본을 공유합니다.
그렇다면 이제 질문은 각 멤버 함수의 복사본이 하나만 존재하고 여러 개체에서 사용되는 경우 적절한 데이터 멤버에 액세스하고 업데이트하는 방법은 무엇입니까?
컴파일러는 'this'라는 함수 이름과 함께 암시적 포인터를 제공합니다.
'this' 포인터는 모든 비정적 멤버 함수 호출에 숨겨진 인수로 전달되며 모든 비정적 함수 본문 내에서 지역 변수로 사용할 수 있습니다. 정적 멤버 함수는 개체(클래스 이름 포함) 없이 호출할 수 있으므로 'this' 포인터는 정적 멤버 함수에서 사용할 수 없습니다.
다음은 이 포인터의 용도입니다.
1) 지역 변수 이름이 멤버 이름과 같은 경우
2) 호출 객체에 대한 참조를 반환하려면

(답변 크레딧: GFG)

직렬화 및 역직렬화란?
직렬화는 개체를 메모리에 저장할 수 있도록 일련의 바이트로 변환하는 메커니즘입니다. 일단 생성된 바이트 스트림은 통신 링크를 통해 원격 수신단으로 스트리밍될 수도 있습니다. 직렬화의 반대를 역직렬화라고 합니다. 여기서 바이트 스트림의 데이터는 데이터를 원래 개체 형식으로 재구성하는 데 사용됩니다. 개체 지속성과 별개로 이 메커니즘은 개체 정보를 직렬화된 형식으로 전송하는 데 특히 유용합니다. 예를 들어 서버는 개체 정보를 수신할 때 역직렬화하고 원래 형식인 개체 형식을 생성할 수 있습니다.

가상 함수란 무엇입니까? 예제를 작성하시겠습니까?

가상 함수는 상속과 함께 사용되며 포인터나 참조 유형이 아니라 가리키거나 참조되는 객체 유형에 따라 호출됩니다. 즉, 가상 기능은 런타임에 해결됩니다. 가상 키워드는 기능을 가상으로 만드는 데 사용됩니다.
기본 클래스와 파생 클래스 모두에 동일한 함수 이름이 있고 파생 클래스 메서드에 액세스하려는 경우 기본 클래스 메서드를 가상으로 만들어 이를 달성할 수 있습니다.

예를 들어, 다음 프로그램에서 bp는 Base 유형의 포인터이지만 bp->show() 호출은 bp가 Derived 클래스의 객체를 가리키기 때문에 Derived 클래스의 show() 함수를 호출합니다.

#include<iostream> 
using namespace std; 

class Base { 
public: 
    virtual void show() { cout<<" In Base \n"; } 
}; 

class Derived: public Base { 
public: 
    void show() { cout<<"In Derived \n"; }  
}; 

int main(void) {    
    Base *bp = new Derived;      
    bp->show();  // RUN-TIME POLYMORPHISM 
    return 0; 
} 

O/P: 파생됨

*순수 가상 기능이란 무엇입니까? *

C++의 순수 가상 함수(또는 추상 함수)는 구현이 없고 선언만 하는 가상 함수입니다. 순수 가상 함수는 선언에 0을 할당하여 선언합니다. 다음 예를 참조하십시오.

class virtualexample 
{    
    // Data members of class 
public: 
    // Pure Virtual Function 
    virtual void show() = 0; 

   /* Other members */
};

C++ 기반 인터뷰 질문을 더 추가할 예정입니다. 인터뷰에서 흥미로운 C++ 질문을 접한 적이 있는지 제안하십시오.

좋은 웹페이지 즐겨찾기