Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

자주 묻는 C++ 인터뷰 질문

<시간/>

여기에서 몇 가지 중요한 C++ 인터뷰 질문을 볼 수 있습니다.

  • C와 C++의 차이점은 무엇입니까?

C C++
소개 C는 1969년경 AT&T Bell Labs에서 Dennis Ritchie에 의해 개발되었습니다. C++는 1979년 Bjarne Stroustrup에 의해 개발되었습니다.
언어 유형 앞서 언급했듯이 C는 절차적 프로그래밍입니다. 반면에 C++는 절차적 프로그래밍 패러다임과 객체 지향 프로그래밍 패러다임을 모두 지원합니다.
OOP 기능 지원 C는 OOP 개념을 지원하지 않으므로 다형성, 캡슐화 및 상속을 지원하지 않습니다. C++는 객체 지향 프로그래밍 언어이므로 다형성, 캡슐화 및 상속을 지원합니다.
데이터 보안 C는 캡슐화를 지원하지 않으므로 데이터는 자유 엔티티처럼 작동하고 외부 코드에 의해 조작될 수 있습니다. 반면에 C++ 캡슐화의 경우 데이터 구조와 연산자가 의도한 대로 사용되도록 데이터를 숨깁니다.
구동 유형 C는 일반적으로 함수 중심 언어로 알려져 있습니다. 반면에 C++는 객체 주도 언어로 알려져 있습니다.
지원되는 기능 C는 함수를 지원하지 않으며 연산자 오버로딩도 네임스페이스 기능 및 참조 변수 기능이 없습니다. 반면, C++는 함수와 연산자 오버로딩을 모두 지원하며, 네임스페이스 기능과 참조 변수 기능도 가지고 있습니다.
  • 포인터와 참조의 차이점은 무엇입니까?

포인터와 참조의 주요 차이점은 -

  • 참조는 다른 이름의 기존 변수를 참조하는 데 사용되는 반면 포인터는 변수의 주소를 저장하는 데 사용됩니다.

  • 참조는 null 값을 할당할 수 없지만 포인터는 할당할 수 있습니다.

  • 참조 변수는 값으로 참조할 수 있는 반면 포인터는 참조할 수 있지만 참조로 전달할 수 있습니다.

  • 참조는 선언 시 초기화되어야 하지만 포인터의 경우 필요하지 않습니다.

  • 참조는 원래 변수와 동일한 메모리 주소를 공유하지만 스택에서 약간의 공간도 차지하는 반면 포인터는 스택에서 자체 메모리 주소와 크기를 갖습니다.

  • C++에서 가상 함수란 무엇입니까?

C++의 가상 함수는 파생 클래스 개체의 종류를 모른 채 기본 클래스 포인터 목록을 만들고 파생 클래스의 메서드를 호출하는 데 사용합니다. 가상 기능은 런타임에 늦게 해결됩니다.

기본 클래스의 가상 함수가 한 번 멤버 함수로 선언된 경우 해당 기본 클래스에서 파생된 모든 클래스에서 가상 함수가 됩니다. 따라서 가상 기본 클래스 함수의 재정의 버전을 선언하면서 파생 클래스에서는 virtual 키워드를 사용할 필요가 없습니다.

예시

#include<iostream>
using namespace std;
class B {
   public:
   virtual void s() {
      cout<<" In Base \n";
   }
};
class D: public B {
   public:
   void s() {
      cout<<"In Derived \n";
   }
};
int main(void) {
   D d; // An object of class D
   B *b= &d; // A pointer of type B* pointing to d
   b->s(); // prints"D::s() called"
   return 0;
}

출력

In Derived

C++에서 이 포인터는 무엇입니까?

C++의 모든 객체는 이 포인터라는 중요한 포인터를 통해 자신의 주소에 액세스할 수 있습니다. this 포인터는 모든 멤버 함수에 대한 암시적 매개변수입니다. 따라서 멤버 함수 내에서 호출하는 개체를 참조하는 데 사용할 수 있습니다.

친구는 클래스의 구성원이 아니기 때문에 친구 함수에는 this 포인터가 없습니다. 멤버 함수에만 this 포인터가 있습니다.

이 포인터의 개념을 이해하기 위해 다음 예를 시도해 보겠습니다. -

예시

#include <iostream>
using namespace std;
class Box {
   public:
   // Constructor definition
   Box(double l = 2.0, double b = 2.0, double h = 2.0) {
      cout <<"Constructor called." << endl;
      length = l;
      breadth = b;
      height = h;
   }
   double Volume() {
      return length * breadth * height;
   }
   int compare(Box box) {
      return this->Volume() > box.Volume();
   }
   private:
   double length; // Length of a box
   double breadth; // Breadth of a box
   double height; // Height of a box
};
int main(void) {
   Box Box1(3.3, 1.2, 1.5); // Declare box1
   Box Box2(8.5, 6.0, 2.0); // Declare box2
   if(Box1.compare(Box2)) {
      cout << "Box2 is smaller than Box1" <<endl;
   } else {
      cout << "Box2 is equal to or larger than Box1" <<endl;
   }
   return 0;
}

출력

Constructor called.
Constructor called.
Box2 is equal to or larger than Box1