C++ – 코더들이 꼭 알아야 할이자 항상 선호하는 프로그래밍 언어입니다. 80년대 중반의 일이라 지금도 유효하다. 범용 및 객체 지향 프로그래밍 언어는 코딩하는 동안 거의 매번 광범위하게 사용됩니다. 결과적으로 일부 직무에서는 C++에 능숙해야 합니다. 등 최고의 IT 기업에서 활용하고 있습니다. Evernote, LinkedIn, Microsoft, Opera, NASA , 그리고 메타 신뢰성, 성능 및 사용할 수 있는 광범위한 설정 때문입니다. 그래서 이런 회사에 들어가려면 이런 부분을 철저히 준비해야 합니다. C++ 인터뷰 질문 상위 50개 채용 담당자 앞에서 당신을 전문가처럼 보이게 만들 수 있습니다.

당신이 인터뷰 준비를 할 수 있도록, 우리는 C++ 인터뷰 질문 상위 50개 초급, 중급 및 경험자 최고의 다국적 기업에 오르려면 반드시 거쳐야 하는 과정입니다.
신입생을 위한 C++ 인터뷰 질문
1. C++란 무엇입니까? C++의 장점은 무엇인가요?
C++는 C가 부족한 영역을 극복하기 위해 도입된 객체지향 프로그래밍 언어입니다. 객체 지향이란 다음과 같은 개념으로 작동한다는 의미입니다. 다형성 , 계승 , 추출 , 캡슐화 , 객체와 클래스 .
C++의 장점 :
- C++는 데이터를 객체로 간주한다는 의미의 OOP 언어입니다.
- C++는 다중 패러다임 언어입니다. 간단히 말해서, 프로그램의 논리, 구조, 절차를 프로그래밍할 수 있다는 의미입니다.
- 메모리 관리는 동적 메모리 할당을 가능하게 하는 C++의 핵심 기능입니다.
- 게임, 데스크탑 애플리케이션, 드라이버 및 커널을 개발할 수 있는 중간 수준 프로그래밍 언어입니다.
자세한 내용은 다음 기사를 참조하세요. C++의 장점은 무엇인가요?
2. C++에 존재하는 다양한 데이터 유형은 무엇입니까?

C++의 다양한 데이터 유형
자세한 내용은 다음을 참조하세요. ' 성병' 표준이라고도 하며 네임스페이스로 해석될 수도 있습니다. 명령 네임스페이스 표준 사용 컴파일러에게 아래에 모든 것을 추가하라고 알립니다. 표준 네임스페이스 그리고 그것들을 전역 네임스페이스 . 전역 네임스페이스의 이러한 모든 주입은 우리가 사용하는 데 이점이 있습니다. 시합 그리고 식사 사용하지 않고 표준::_operator_.
자세한 내용은 다음을 참조하세요. 네임스페이스와 표준 .
4. C++의 참조란 무엇입니까?
변수가 참조로 설명되면 기존 변수의 별칭이 됩니다. 간단히 말해서 참조 변수는 참조 변수의 변경 사항이 기존 변수에 반영된다는 점을 염두에 두고 기존 변수의 또 다른 명명된 변수입니다. 참조 변수 앞에는 '&' 상징.
통사론:
int GFG = 10; // reference variable int& ref = GFG;>
자세한 내용은 다음을 참조하세요. C++의 참조
5. Call by Value와 Call by Reference는 무엇을 의미합니까?
함수를 호출하는 이 프로그래밍 언어에는 두 가지 방법이 있습니다. 가치에 의한 호출 그리고 참조로 전화
가치에 의한 호출 | 참조로 전화 |
|---|---|
| 변수의 복사본이 전달됩니다. | 변수 자체는 기본적으로 전달됩니다. |
| 변수를 복사하여 값을 전송하여 함수를 호출합니다. | 전달된 변수의 주소를 전송하여 함수를 호출합니다. |
| 함수에서 변경된 내용은 함수 외부의 변수에 반영되지 않습니다. 즉, Call by Value에서는 원래 값이 변경되지 않습니다. | 함수의 변경 사항은 전달된 함수의 함수 외부에서 볼 수 있습니다. 즉, Call by reference에서는 원래 값이 변경됩니다. |
| 전달된 실제 매개변수와 형식 매개변수는 서로 다른 메모리 위치에 저장됩니다. 따라서 Call by Value를 약간 메모리가 부족하게 만들면 | 전달된 실제 매개변수와 형식 매개변수는 동일한 메모리 위치에 저장됩니다. 따라서 참조에 의한 호출을 좀 더 메모리 효율적으로 만듭니다. |
자세한 내용은 다음을 참조하세요. 값에 의한 호출과 참조에 의한 호출의 차이점
6. C++에서 토큰 정의
토큰은 컴파일러가 이해하는 프로그램의 가장 작은 개별 요소입니다. 토큰은 다음으로 구성됩니다.
- 키워드 – 컴파일러에 대한 특별한 의미를 포함합니다.
- 식별자 – 고유한 가치/정체성을 갖고 있는 것
- 상수 – 프로그램 전반에 걸쳐 그 가치는 결코 변하지 않습니다.
- 문자열 – 동질적인 데이터 시퀀스를 포함합니다.
- 특수 기호 – 특별한 의미가 있으므로 다른 목적으로 사용할 수 없습니다. 예: [] () {}, ; * = #
- 연산자 – 피연산자에 대한 연산을 수행하는 사람
자세한 내용은 다음을 참조하세요. C++의 토큰
7. C와 C++의 차이점은 무엇입니까?
씨 | C++ |
|---|---|
| 절차적 프로그래밍 언어이다. 간단히 말해서 클래스와 객체를 지원하지 않습니다. | 절차지향 프로그래밍 언어와 객체지향 프로그래밍 언어가 혼합된 형태입니다. 간단히 말해서 클래스와 객체를 지원합니다. |
| 다형성, 데이터 추상화, 캡슐화, 클래스 및 객체와 같은 OOP 개념을 지원하지 않습니다. | 데이터의 모든 개념을 지원합니다. |
| 함수 및 연산자 오버로딩을 지원하지 않습니다. | 함수 및 연산자 오버로딩을 각각 지원합니다. |
| 함수 중심 언어이다 | 객체지향 언어이다 |
자세한 내용은 다음을 참조하세요. C와 C++의 차이점
8. 구조체와 클래스의 차이점은 무엇입니까?
구조체 | 수업 |
|---|---|
| 구조체의 멤버는 항상 기본적으로 공개 모드입니다. | 클래스의 멤버는 비공개, 보호 및 공개 모드일 수 있습니다. |
| 구조체는 값 유형입니다. 그것들은 기억 속에만 가치를 담고 있습니다. | 클래스는 참조 유형입니다. 메모리에 객체에 대한 참조를 보유합니다. |
| 구조체의 메모리는 스택으로 저장됩니다. | 클래스의 메모리는 힙으로 저장됩니다. |
자세한 내용은 다음을 참조하세요. 구조체와 클래스의 차이점.
9. 참조와 포인터의 차이점은 무엇입니까?
참조 적대적 검색 | 바늘 |
|---|---|
| 참조 값은 재할당할 수 없습니다. | 포인터의 값을 재할당할 수 있습니다. |
| 그것은 결코 담을 수 없다 없는 별칭이 되려면 기존 값이 필요하기 때문에 값 | 이는 다음을 보유하거나 가리킬 수 있습니다. 없는 가치가 있으며 다음과 같이 불린다. nullptr 또는 널 포인터 |
| 배열에서는 작동하지 않습니다 | 배열과 함께 작동할 수 있습니다. |
| 클래스/구조체의 멤버에 액세스하려면 ' . ' | 클래스/구조체의 멤버에 액세스하려면 ' -> ' |
| 참조 메모리 위치에 쉽게 접근하거나 직접 사용할 수 있습니다. | 역참조 '를 사용해야 하기 때문에 포인터의 메모리 위치에 쉽게 접근할 수 없습니다. * ' |
자세한 내용은 다음을 참조하세요. 참조와 포인터의 차이점
10. 함수 오버로딩과 연산자 오버로딩의 차이점은 무엇입니까?
함수 오버로딩 | 연산자 오버로딩 |
|---|---|
| 기본적으로 함수를 호출하는 방법이 다양하거나 간단히 말해서 동일한 함수의 여러 버전이 있는 등 다양한 방법으로 함수를 정의합니다. | 기본적으로 연산자의 기존 의미에 특별한 의미를 부여하거나, 미리 재정의된 의미를 간단한 용어로 재정의하는 연습을 시키는 것입니다. |
| 매개변수화된 함수는 함수 오버로딩의 좋은 예입니다. 함수의 인수나 매개변수를 변경하는 것만으로도 함수를 다양한 목적에 유용하게 만들 수 있기 때문입니다. | 다형성은 연산자 오버로딩의 좋은 예입니다. 할당 클래스의 객체는 다양한 목적을 위해 다양한 클래스에서 사용하고 호출할 수 있습니다. |
함수 오버로딩의 예:
| 연산자 오버로딩의 예:
|
자세한 내용은 다음을 참조하세요. 연산자 오버로딩 그리고 함수 오버로딩
11. 배열과 목록의 차이점은 무엇입니까?
배열 | 기울기 |
|---|---|
| 배열은 고정된 위치나 크기에 저장된 동종 데이터 유형의 연속 메모리 위치입니다. | 목록은 포인터를 사용하여 서로 연결되거나 연결되며 고정된 크기를 갖지 않는 고전적인 개별 요소입니다. |
| 배열은 본질적으로 정적입니다. | 목록은 본질적으로 동적입니다. |
| 연결된 목록보다 적은 메모리를 사용합니다. | 값과 포인터 메모리 위치를 저장해야 하므로 더 많은 메모리를 사용합니다. |
자세한 내용은 다음을 참조하세요. 배열 대 목록
12. while 루프와 do-while 루프의 차이점은 무엇입니까?
while 루프 | do-while 루프 |
|---|---|
| While 루프는 진입 제어 루프라고도 합니다. | do-while 루프를 종료 제어 루프라고 합니다. |
| 조건이 만족되지 않으면 루프 내부의 명령문은 실행되지 않습니다. | 조건이 만족되지 않더라도 루프 내부의 명령문은 적어도 한 번 실행됩니다. |
예 while 루프의 경우: 동안(조건) 자바에서 문자를 문자열로 {실행할 명령문;}; | 예 do-while 루프의 경우: 하다 { 실행될 명령문; } while(조건 또는 표현식); |
자세한 내용은 다음을 참조하세요. while과 do-while 루프의 차이점
13. 접두사와 접미사의 차이점에 대해 토론해 보세요.
접두사 | 접미사 |
|---|---|
| 이는 단순히 연산자를 피연산자 앞에 놓는 것을 의미합니다. | 이는 단순히 피연산자 뒤에 연산자를 넣는 것을 의미합니다. |
| 이전에 자체적으로 실행됩니다. '; ' | 이후에 자체적으로 실행됩니다. '; ' |
| 접두사 ++의 연관성은 오른쪽에서 왼쪽입니다. | 접미사 ++의 연관성은 왼쪽에서 오른쪽입니다 |
자세한 내용은 다음을 참조하세요. 접두사와 접미사의 차이점
14. new와 malloc()의 차이점은 무엇입니까?
새로운 | malloc() |
|---|---|
| new는 작업을 수행하는 연산자입니다. | malloc은 값을 반환하고 받아들이는 함수입니다. |
| new는 생성자를 호출합니다. | malloc은 생성자를 호출할 수 없습니다. |
| new는 연산자이므로 malloc보다 빠릅니다. | malloc은 함수이기 때문에 새로운 것보다 느립니다. |
| new는 정확한 데이터 유형을 반환합니다. | malloc은 void*를 반환합니다. |
자세한 내용은 다음을 참조하세요. new와 malloc()의 차이점
15. 가상 기능과 순수 가상 기능의 차이점은 무엇입니까?
가상 기능 | 순수 가상 함수 |
|---|---|
| 가상 함수는 다른 파생 클래스에서 재정의될 수 있는 기본 클래스의 멤버 함수입니다. | 순수 가상 함수는 기본 클래스에서만 선언되고 파생 클래스에서만 정의되어 추상 클래스가 되는 것을 방지하는 기본 클래스의 멤버 함수입니다. |
| 가상 함수는 해당 기본 클래스에 정의가 있습니다. | 순수 가상 함수에는 정의가 없으며 순수 지정자로 초기화됩니다. (= 0). |
| 기본 클래스에는 표현되거나 인스턴스화될 수 있는 가상 함수가 있습니다. 간단히 말해서, 그 대상을 만들 수 있습니다. | 순수 가상 함수를 갖는 기본 클래스는 표현되거나 인스턴스화될 수 없는 추상 클래스가 됩니다. 쉽게 말하면 물건을 만들 수 없다는 뜻이다. |
자세한 내용은 다음을 참조하세요. 가상 함수와 순수 가상 함수의 차이점
16. C++의 클래스와 객체는 무엇입니까?
클래스는 모든 멤버 함수와 데이터 멤버가 수요와 요구 사항에 따라 맞춤 제작된 사용자 정의 데이터 유형입니다. 물체 . 사용자 정의 데이터 유형을 선언하려면 키워드를 사용합니다. 수업.
객체는 클래스의 인스턴스이자 값과 상태를 가진 엔터티입니다. 쉽게 말하면 촉매제나 반원을 대표하는 용도로 사용됩니다. 여기에는 다른 매개변수가 포함되거나 포함되지 않을 수 있습니다.
메모: 클래스는 객체가 사용하는 기능을 정의하는 청사진입니다.
자세한 내용은 다음을 참조하세요. 클래스와 객체란 무엇인가
17. 함수 재정의란 무엇입니까?
기본 클래스에 이미 존재/선언된 동일한 이름, 동일한 인수 또는 매개변수 및 동일한 반환 유형의 함수가 파생 클래스에서 사용되는 경우를 함수 재정의라고 합니다. 이는 런타임 다형성 또는 런타임 바인딩의 예입니다. 이는 재정의된 함수가 실행 런타임에 실행된다는 의미입니다.
자세한 내용은 다음을 참조하세요. C++의 함수 재정의
18. C++의 다양한 OOP 개념은 무엇입니까?
- 클래스 : 사용자 정의 데이터 유형입니다.
- 사물 : 클래스의 인스턴스입니다.
- 추출: 꼭 필요한 부분만 보여주는 기술입니다
- 캡슐화: 단일 단위로 데이터 래핑
- 계승: 다른 클래스로부터 속성과 특징을 파생시키는 클래스의 능력
- 다형성: 다형성은 동일한 것의 여러 형태로 알려져 있습니다.
자세한 내용은 다음을 참조하세요. C++의 다양한 OOP 개념
19. 상속 설명
다른 클래스에서 속성과 특성을 파생시키는 클래스의 기능을 상속이라고 합니다. 간단히 말해서 기존 클래스를 수정하지 않고 재사용하고 확장하는 시스템 또는 기술입니다.
자세한 내용은 다음을 참조하세요. 계승
20. 다중 상속은 언제 사용해야 합니까?
다중 상속은 파생 클래스가 두 개 이상의 기본/부모 클래스를 상속할 수 있음을 의미합니다. 파생 클래스가 수많은 특성/계약을 결합하고 이러한 특성/계약에서 구현의 일부 또는 전부를 상속해야 하는 경우 유용합니다. 실제 예를 들어보려면 부모 A가 DAD이고 부모 B가 MOM이고 자녀 C가 귀하인 부모를 생각해 보세요.

다중 상속
자세한 내용은 다음을 참조하세요. 다중 상속 .
21. 가상 상속이란 무엇입니까?
가상 상속은 기본 클래스 멤버 변수의 복사본 하나만 손자 파생 클래스에서 상속되도록 하는 기술입니다. 또는 간단히 말해서 가상 상속은 다중 상속 상황을 처리하지만 동일한 클래스의 여러 인스턴스가 상속 계층 구조에 나타나는 것을 방지하려는 경우에 사용됩니다.
22. C++의 다형성이란 무엇입니까?
다형성은 동일한 것의 여러 형태로 알려져 있습니다. 간단히 말해서 다형성은 호출하는 객체의 유형에 따라 멤버 함수를 여러 형태로 표시하는 기능이라고 말할 수 있습니다.
arraylist 정렬 자바
즉, 남자는 누군가의 고용인, 누군가의 아들, 누군가의 아버지, 누군가의 남편이 될 수도 있습니다. 이것이 다형성이 실제 생활에 투영되는 방식입니다.
다형성에는 2가지 유형이 있습니다.
- 컴파일 시간 다형성
- 함수 오버로딩
- 연산자 오버로딩
- 런타임 다형성
- 함수 재정의
- 가상 기능
그것에 대해 더 알고 싶다면 다음을 참조하십시오. 다형성
23. C++의 다형성에는 어떤 유형이 있나요?
다형성에는 2가지 유형이 있습니다.
컴파일 시간 다형성 또는 정적 바인딩
이러한 유형의 다형성은 프로그램의 컴파일 시간 동안 달성되므로 결과적으로 런타임보다 약간 빨라집니다. 또한 상속은 이에 관여하지 않습니다. 그것은 다음과 같이 구성되어 있습니다 2가지 추가 기술 :
함수 오버로딩: 이름은 같지만 매개변수가 다른 함수가 여러 개 있는 경우 이를 함수 오버로딩이라고 합니다.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
연산자 오버로딩: 기본적으로 연산자의 기존 의미에 특별한 의미를 부여하거나, 미리 재정의된 의미를 간단한 용어로 재정의하는 연습을 시키는 것입니다.
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
런타임 다형성 또는 후기 바인딩
런타임 다형성은 런타임 중에 함수가 호출될 때 발생합니다.
함수 재정의: 함수 재정의는 동일한 인수와 반환 유형을 사용하여 파생 클래스에서 기본 클래스 멤버 함수를 다시 정의할 때 발생합니다.
// C++ program to demonstrate // Function overriding #include using namespace std; class GFG { public: virtual void display() { cout << 'Function of base class' << endl; } }; class derived_GFG : public GFG { public: void display() { cout << 'Function of derived class' << endl; } }; int main() { derived_GFG dg; dg.display(); return 0; }> 산출:
Function of derived class>
자세한 내용은 다음을 참조하세요. 다양한 유형의 다형성
24. 컴파일 타임 다형성과 런타임 다형성 비교
컴파일 타임 다형성 | 런타임 다형성 |
|---|---|
| 정적 바인딩 및 초기 바인딩이라고도 합니다. | 동적 바인딩, 후기 바인딩이라고도 합니다. |
| 컴파일 타임 초기에 실행이 알려지기 때문에 빠릅니다. | 런타임에 실행이 알려지기 때문에 컴파일 타임에 비해 느립니다. |
| 이는 함수 오버로딩과 연산자 오버로딩을 통해 달성됩니다. | 이는 가상 함수 및 함수 재정의를 통해 달성됩니다. |
자세한 내용은 다음을 참조하세요. 컴파일 타임 다형성과 런타임 다형성
25. C++의 생성자를 설명하세요.
생성자는 클래스의 멤버 함수의 특별한 유형으로, 이름은 호출된 클래스의 이름과 동일하고 값을 클래스 객체로 초기화합니다.
생성자에는 3가지 유형이 있습니다.
A. 기본 생성자: 인수나 매개변수를 허용하지 않는 가장 기본적인 유형의 생성자입니다. 호출되지 않더라도 객체가 생성될 때 컴파일러는 자동으로 호출합니다.
예:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. 매개변수화된 생성자: 인수 또는 매개변수를 허용하는 생성자 유형입니다. 이러한 인수는 개체가 생성될 때 개체를 초기화하는 데 도움이 되므로 인수에 값을 전달하여 명시적으로 호출해야 합니다. 또한 클래스의 이름과 동일한 이름을 갖습니다.
또한 생성자를 오버로드하는 데 사용됩니다.
예:
C++ // CPP program to demonstrate // parameterized constructors #include using namespace std; class GFG { private: int x, y; public: // Parameterized Constructor GFG(int x1, int y1) { x = x1; y = y1; } int getX() { return x; } int getY() { return y; } }; int main() { // Constructor called GFG G(10, 15); // Access values assigned by constructor cout << 'G.x = ' << G.getX() << ', G.y = ' << G.getY(); return 0; }> 산출
G.x = 10, G.y = 15>
C. 복사 생성자: 복사 생성자는 동일한 클래스의 다른 개체를 사용하여 개체를 초기화하는 멤버 함수입니다. 또한 Copy 생성자는 동일한 클래스의 개체에 대한 참조를 인수로 사용합니다.
예:
C++ Sample(Sample& t) { id = t.id; }>
자세한 내용은 다음을 참조하세요. 생성자
26. C++의 소멸자는 무엇입니까?
소멸자는 클래스의 개체가 범위를 벗어날 때 개체를 삭제하는 클래스의 함수 멤버입니다. 소멸자는 클래스 이름과 이름이 같고 앞에 물결표(~) 기호가 붙습니다. 또한 소멸자는 아래에서 위로 하향식을 따르는 생성자와 달리 접근 방식입니다.
통사론:
~constructor_name(); // tilde sign signifies that it is a destructor>
자세한 내용은 다음을 참조하세요. 파괴자 .
27. 가상 소멸자란 무엇입니까?
기본 클래스 포인터 개체를 사용하여 파생 클래스의 인스턴스나 개체를 삭제할 때 파생 클래스 개체나 인스턴스가 할당한 메모리 공간을 확보하기 위해 가상 소멸자가 호출됩니다.
가상 소멸자는 파생 클래스의 소멸자가 먼저 호출되도록 보장합니다. 그런 다음 기본 클래스의 소멸자가 호출되어 상속 클래스에서 두 소멸자가 차지하는 공간을 해제하여 메모리 누수를 방지합니다. 클래스가 다형성일 때마다 소멸자를 가상으로 만드는 것이 좋습니다.
자세한 내용은 다음을 참조하세요. 가상 파괴자
k-nn 알고리즘
28. 소멸자 오버로딩이 가능합니까? 그렇다면 설명하고, 그렇지 않다면 이유는 무엇입니까?
간단한 대답은 아니요 소멸자를 오버로드할 수 없습니다. C++에서는 클래스당 소멸자만 필수입니다. 또한 언급하자면 소멸자는 인수를 취하지 않으며 오버로드에 도움이 될 수 있는 매개변수도 없습니다.
C++ 인터뷰 질문 - 중급
29. 포인터에는 어떤 작업이 허용됩니까?
포인터는 다른 변수의 주소 위치를 저장하는 데 사용되는 변수입니다. 포인터에 허용되는 작업은 다음과 같습니다.
- 포인터의 증가/감소
- 포인터에 정수의 덧셈과 뺄셈
- 동일한 유형의 포인터 비교
30. 본 행사의 목적은 무엇입니까? 삭제 운영자?
삭제 연산자는 메모리 할당을 해제하여 객체의 모든 특성/속성을 삭제/제거하는 데 사용됩니다. 게다가 결국에는 true 또는 false를 반환합니다. 간단히 말해서 새로운 표현식으로 생성된 배열 및 배열이 아닌(포인터) 객체를 파괴하거나 할당을 취소합니다.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
자세한 내용은 다음을 참조하세요. 삭제 연산자
31. 삭제 []는 삭제와 어떻게 다릅니까?
삭제[] | 삭제 |
|---|---|
| 전체 배열을 삭제하는 데 사용됩니다. | 하나의 단일 포인터만 삭제하는 데 사용됩니다. |
| 개체를 삭제하는 데 사용됩니다. 새로운[]; 이것으로 우리는 다음과 같이 말할 수 있습니다. 삭제[] 객체 배열을 삭제하는 데 사용됩니다. | 개체를 삭제하는 데 사용됩니다. 새로운; 이것으로 우리는 다음과 같이 말할 수 있습니다. 삭제 단일 객체를 삭제하는 데 사용됩니다. |
| 원하는 만큼 소멸자를 호출할 수 있습니다. | 클래스의 소멸자는 한 번만 호출할 수 있습니다. |
32. 친구 클래스와 친구 기능에 대해 무엇을 알고 있나요?
친구 클래스는 친구로 선언된 클래스의 보호 변수와 개인 변수 모두에 액세스할 수 있는 클래스입니다.
친구 클래스의 예:
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
친구 함수는 비공개, 보호 및 공개 데이터 멤버나 다른 클래스의 멤버 함수에 액세스하는 데 사용되는 함수입니다. 친구 키워드로 선언됩니다. 프렌드 함수의 장점은 클래스의 범위에 얽매이지 않고 클래스에 선언된 후에는 클래스의 객체에서 호출할 수 없다는 것입니다. 그러므로 다른 함수에 의해 호출될 수 있습니다. 언급된 모든 사항을 고려하면 친구 함수는 전역 함수라고 말할 수 있습니다. .
친구 기능의 예:
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
자세한 내용은 다음을 참조하세요. 친구 함수와 친구 클래스
33. 오버플로 오류란 무엇입니까?
오버플로 오류는 데이터 형식이 처리할 수 없을 정도로 숫자가 너무 큰 경우 발생합니다. 간단히 말해서, 정의된 범위에 대해서는 유효하지만 일치/접속되어야 하는 정의된 범위를 초과하여 사용되는 오류 유형입니다.
예를 들어 int 데이터 유형의 범위는 다음과 같습니다. -2,147,483,648 에게 2,147,483,647 그리고 크기 변수를 선언하면 2,247,483,648 오버플로 오류가 발생합니다.
34. 범위 확인 연산자는 무엇을 합니까?
범위 결정 연산자는 '로 표시됩니다. :: ' 기호. 이름과 마찬가지로 이 연산자는 프로그램의 범위 장벽을 해결합니다. 범위 확인 연산자는 범위 밖의 멤버 함수나 전역 변수를 참조하는 데 사용되며, 프로그램의 숨겨진 변수나 함수에도 액세스할 수도 있습니다.
범위 해결은 다양한 작업에 사용됩니다.
- 같은 이름의 로컬 변수가 있을 때 전역 변수에 접근하려면
- 클래스 외부에서 함수를 정의하려면
- 다중 상속의 경우
- 네임스페이스의 경우
자세한 내용은 다음을 참조하세요. 범위 확인 연산자
35. C++ 액세스 수정자란 무엇입니까?
클래스 멤버(멤버 함수이든 데이터 멤버이든)에 지정된 액세스 제한을 액세스 한정자/지정자라고 합니다.
액세스 수정자는 3가지 유형이 있습니다.
- 사적인 - 클래스 외부에서는 접근할 수도 볼 수도 없습니다.
- 보호됨 – 접근자가 파생 클래스인 경우에만 액세스할 수 있습니다.
- 공공의 - 클래스 외부에서 접근하거나 볼 수 있습니다.
자세한 내용은 다음을 참조하세요. 액세스 수정자
36. main 함수 없이 프로그램을 컴파일할 수 있나요?
예, main() 없이 프로그램을 컴파일하는 것은 절대적으로 가능합니다. 예를 들어, 메인을 정의하는 매크로를 사용하세요.
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> 자세한 내용은 다음을 참조하세요. main 함수 없이 프로그램을 컴파일할 수 있나요?
37. STL이란 무엇입니까?
STL은 표준 템플릿 라이브러리(Standard Template Library)라고도 하며 컨테이너, 알고리즘, 반복기 등 4가지 구성 요소를 제공하는 라이브러리입니다.

C++ STL
자세한 내용은 다음을 참조하세요. C++의 STL
38. 인라인 함수를 정의합니다. C++에서 재귀적 인라인 함수를 사용할 수 있나요?
인라인 함수는 함수를 기본 함수 본문에 인라인하는 컴파일러에 대한 명령이 아닌 요청 형식입니다. 함수 실행 시간이 호출자 함수에서 호출된 함수로 전환하는 시간보다 짧은 경우 인라인 함수는 오버헤드가 될 수 있습니다. 함수를 인라인으로 만들려면 키워드를 사용하세요. 인라인 함수 호출이 이루어지기 전에 함수를 정의하고 정의합니다.

인라인 함수 설명
통사론:
inline data_type function_name() { Body; }>정답은 아니요; 재귀적일 수 없습니다.
인라인 함수의 경우 코드는 단지 호출된 위치에 배치되고 재귀에 필요한 정보 조각을 스택에 유지하지 않기 때문에 인라인 함수는 재귀적일 수 없습니다.
또한 재귀 함수 앞에 인라인 키워드를 작성하면 인라인은 컴파일러의 제안으로만 간주되므로 컴파일러는 이를 자동으로 무시합니다.
자세한 내용은 다음을 참조하세요. 인라인 함수
39. 추상클래스란 무엇이며 언제 사용하나요?
추상 클래스는 기본 클래스로 사용하도록 특별히 설계된 클래스입니다. 추상 클래스에는 하나 이상의 순수 가상 함수가 포함됩니다. 다음을 사용하여 순수 가상 함수를 선언합니다. 순수 지정자(= 0) 클래스 선언의 가상 멤버 함수 선언
추상 클래스를 매개변수 유형, 함수 반환 유형 또는 명시적 변환 유형으로 사용할 수 없으며 추상 클래스의 객체를 선언할 수도 없습니다. 그러나 추상 클래스에 대한 포인터와 참조를 선언하는 데 사용할 수 있습니다.
구성 요소의 모든 구현 간에 공통적으로 구현된 기능을 제공하려는 경우 추상 클래스가 사용됩니다. 추상 클래스를 사용하면 클래스를 부분적으로 구현할 수 있는 반면 인터페이스에는 멤버에 대한 구현이 전혀 없습니다. 간단히 말해서 추상 클래스는 자녀에게 구현 세부 정보를 제공하고 싶지만 클래스 인스턴스가 직접 인스턴스화되는 것을 허용하지 않으려는 경우에 적합합니다.
40. 정적 데이터 멤버와 정적 멤버 함수는 무엇입니까?
클래스의 정적 데이터 멤버는 일반 데이터 멤버이지만 정적 키워드가 앞에 옵니다. 프로그램에서 main()보다 먼저 실행되며 클래스의 첫 번째 객체가 생성될 때 0으로 초기화됩니다. 정의된 클래스에만 표시되지만 해당 범위는 평생입니다.
통사론:
static Data_Type Data_Member;>
정적 멤버 함수는 다른 정적 데이터 멤버나 다른 정적 멤버 함수에 액세스하는 데 사용되는 멤버 함수입니다. 또한 static 키워드로 정의됩니다. 클래스 이름이나 클래스 객체를 사용하여 정적 멤버 함수에 액세스할 수 있습니다.
통사론:
classname::function name(parameter);>
C++ 인터뷰 질문 - 전문가 수준
41. Volatile이라는 키워드의 주요 용도는 무엇입니까?
이름처럼 상황이 갑자기, 예기치 않게 바뀔 수 있습니다. 따라서 값이 언제든지 변경될 수 있음을 컴파일러에 알리는 데 사용됩니다. 또한 휘발성 키워드는 컴파일러가 코드에 대한 최적화를 수행하는 것을 방지합니다. 이는 메모리 매핑된 하드웨어, 신호 처리기 및 기계어 명령어와 인터페이스할 때 사용하도록 의도되었습니다.
자세한 내용은 다음을 참조하세요. 휘발성 물질
42. C++로 스토리지 클래스를 정의하고 이름을 지정하세요.
스토리지 클래스는 변수나 함수의 기능(수명 및 가시성)을 정의하는 데 사용됩니다. 이러한 기능은 일반적으로 프로그램 실행 중에 변수의 존재를 추적하는 데 도움이 됩니다.
통사론:
storage_class var_data_type var_name;>
일부 유형의 저장소 클래스:

스토리지 클래스의 예
자세한 내용은 다음을 참조하세요. 스토리지 클래스
43. 가변 스토리지 클래스 지정자란 무엇입니까? 어떻게 사용할 수 있나요?
이름과 마찬가지로 변경 가능한 저장소 클래스 지정자는 클래스 데이터 멤버에만 사용되어 해당 멤버가 const로 선언된 개체의 일부인 경우에도 수정 가능하게 만듭니다. 정적 또는 const 또는 참조 멤버는 변경 가능 지정자를 사용할 수 없습니다. 함수를 const로 선언하면 함수에 전달된 이 포인터는 const가 됩니다.
44. 블록 범위 변수를 정의합니다.
따라서 변수의 범위는 변수에 액세스할 수 있는 영역입니다. 전역과 블록 또는 로컬이라는 두 가지 범위 영역이 있습니다.
블록 범위 변수는 로컬 범위 변수라고도 합니다. 함수 내부(예: main) 또는 블록 내부(예: 루프 및 if 블록)에 정의된 변수는 지역 변수입니다. 선언된 특정 함수/블록 내에서만 사용할 수 있습니다. 블록 범위 변수는 블록이 함수 내부에 있더라도 블록 외부에서 사용할 수 없습니다.
자세한 내용은 다음을 참조하세요. 변수의 범위
45. Auto 키워드의 기능은 무엇인가요?
auto 키워드를 사용하면 복잡한 유형의 변수를 간단한 방식으로 선언할 수 있습니다. 초기화 구문에 템플릿, 함수에 대한 포인터, 멤버에 대한 참조 등이 포함된 경우 auto를 사용하여 변수를 선언할 수 있습니다. 유형 추론 기능을 사용하면 컴파일러가 이미 알고 있는 내용을 작성하는 데 소요되는 시간을 줄일 수 있습니다. 모든 타입은 컴파일러 단계에서만 추론되기 때문에 컴파일 시간은 약간 늘어나지만 프로그램 실행에는 영향을 주지 않습니다.
자세한 내용은 다음을 참조하세요. C++로 작성된 자동차
46. C++에서 네임스페이스를 정의합니다.
네임스페이스를 사용하면 전역 범위를 갖는 명명된 항목을 더 작은 범위로 구성하여 네임스페이스 범위를 제공할 수 있습니다. 이를 통해 프로그램 부분을 이름이 있는 별개의 논리적 범위로 구성할 수 있습니다. 네임스페이스는 변수, 메서드, 클래스와 같은 식별자를 정의하거나 선언하는 장소를 제공합니다.
또는 A 네임스페이스는 범위 내의 식별자(유형, 함수, 변수 등의 이름)를 제공하는 선언 영역이라고 말할 수 있습니다. 네임스페이스는 코드를 논리적 범주로 정렬하고 코드 베이스에 라이브러리가 많을 때 발생할 수 있는 이름 충돌을 방지하는 데 사용됩니다.
네트워크와 인터넷
자세한 내용은 다음을 참조하세요. C++의 네임스페이스
47. void() 반환 유형은 언제 사용됩니까?
void 키워드는 함수 반환 유형으로 사용되는 경우 함수가 값을 반환하지 않음을 나타냅니다. 함수의 매개변수 목록으로 사용되는 경우 void는 함수가 매개변수를 사용하지 않음을 나타냅니다. 값이 아닌 반환 함수는 void 함수라고도 합니다. 아무것도 반환하도록 설계되지 않았기 때문에 void라고 합니다. 사실이지만 부분적으로만 그렇습니다. void 함수에서는 값을 반환할 수 없지만 확실히 무언가를 반환할 수는 있습니다. void 함수에는 반환 유형이 없지만 값을 반환할 수 있습니다.
자세한 내용은 다음을 참조하세요. 무효 반환 유형 .
48. 얕은 복사와 깊은 복사의 차이점은 무엇입니까?
얕은 복사 | 딥 카피 |
|---|---|
| 얕은 복사에서는 원본 객체의 복사본을 저장하고 최종적으로 참조 주소만 복사합니다. 간단히 말해서 얕은 복사는 가능한 한 적게 복제됩니다. | Deep Copy에는 원본 객체의 복사본과 반복 복사본이 모두 저장됩니다. 간단히 말해서 Deep Copy는 모든 것을 복제합니다. |
| 컬렉션의 얕은 복사본은 요소가 아닌 컬렉션 구조의 복사본입니다. 얕은 복사본을 사용하면 이제 두 컬렉션이 개별 요소를 공유합니다. | 컬렉션의 전체 복사본은 원본 컬렉션의 모든 요소가 복제된 두 개의 컬렉션입니다. |
| 얕은 복사본이 더 빠릅니다. | 깊은 복사는 비교적 느립니다. |
자세한 내용은 다음을 참조하세요. 얕은 복사와 깊은 복사
49. 생성자에서 가상 함수를 호출할 수 있나요?
예, 생성자에서 가상 함수를 호출할 수 있습니다. 그러나 재정의 예외가 발생할 수 있습니다.
50. 무효 포인터란 무엇입니까?
이름과 마찬가지로 void 포인터는 어떤 것이나 데이터 유형과도 연관되지 않은 포인터입니다. 그럼에도 불구하고 void 포인터는 모든 유형의 주소 값을 보유할 수 있으며 한 데이터 유형에서 다른 데이터 유형으로 변환될 수 있습니다.
자세한 내용은 다음을 참조하세요. C++의 무효 포인터
보너스 질문:
무엇인가요 ' 이것 ' C++의 포인터?
이것 포인터를 사용하면 모든 개체가 필수 포인터를 통해 자체 주소에 액세스할 수 있습니다. 모든 멤버 함수는 이것 암시적 인수로서의 포인터. 이것 바늘 멤버 함수 내에서 호출 개체를 참조하는 데 사용될 수 있습니다.
- 이것 포인터는 객체를 다른 메소드에 매개변수로 전달하는 데 사용됩니다.
- 각 개체는 데이터 멤버의 자체 복사본을 가져옵니다.
- 이것 포인터는 인덱서를 선언하는 데 사용됩니다.
자세한 내용은 다음을 참조하세요. 이것 C++의 포인터