>  기사  >  백엔드 개발  >  C++ 기본 지식

C++ 기본 지식

angryTom
angryTom원래의
2019-10-26 10:48:526034검색

C++ 기본 지식

c++ 기본

C++은 1979년 Bell Labs의 Bjarne Stroustrup이 설계하고 개발한 중간 언어입니다. C++는 C 언어를 더욱 확장하고 개선하며 객체 지향 프로그래밍 언어입니다. C++는 Windows, MAC 운영 체제, 다양한 버전의 UNIX 등 다양한 플랫폼에서 실행됩니다. C 언어는 프로세스 지향 언어이며, C++는 이를 기반으로 객체 지향적이고 일반적인 프로그래밍 메커니즘을 추가합니다. 따라서 C++는 중대형 프로그램 개발에 더 적합합니다. 그러나 C++는 효율성을 희생하지 않습니다. 고급 기능을 사용하지 않으면 효율성은 C 언어와 거의 동일합니다.

추천 학습: c++ 매뉴얼 튜토리얼

다음은 C++의 기본 지식을 요약한 내용입니다. 도움이 되길 바랍니다.

1. C++의 기본 데이터 유형은 무엇인가요?

답변: 3가지 유형: 정수, 부동 소수점, 무효.

2. 정수에는 여러 가지 형태가 있습니다. 다양한 형태의 차이점은 무엇인가요?

정수형에는 정수형, 문자형, 부울값 등의 산술형이 있는데, 이는 수식어에 따라 13가지 형태로 세분화되며, 주요 차이점은 유형명, 길이, 표현 범위에 반영됩니다.

3. C++의 상수는 무엇인가요?

정답: 6가지 유형의 상수: 정수 상수, 부동 소수점 상수, 문자 상수, 문자열 상수, 이스케이프 문자 상수, 주소 상수.

4. 상수와 변수의 차이점은 무엇인가요?

답변: (1) 상수의 값은 변경할 수 없지만 변수의 값은 변경할 수 있습니다. (2) 상수는 정의할 때 초기화해야 하며, 변수는 정의할 때 초기화할 필요가 없습니다. (3) 상수는 주소를 지정할 수 없으며 해당 주소는 상수 포인터로만 지정할 수 있습니다. (4) 상수는 컴파일 및 실행 효율성이 더 높습니다.

5. ?

답변: (1) 피연산자에 따라: 단항 연산자, 이항 연산자, 삼항 연산자 (2) 함수에 따라: 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 할당 연산자, 증가 및 감소 연산자, 화살표 연산자, 조건 연산자, 크기 연산자, 쉼표 연산자.

6. 자가증가와 자가감소의 수술 전과 수술 후의 차이점은 무엇인가요?

답: 전자의 증가 및 자기 감소 연산의 우선순위는 대입 연산자(=)보다 크고, 후자의 증가 및 자기 감소 연산의 우선순위는 대입 연산자보다 낮으며, 표현식의 값은 후자의 증가 및 자체 감소 작업 이후에는 변경이 발생하지 않습니다.

7. 포인터와 변수의 증가와 감소의 차이점은 무엇인가요?

답변: 변수의 증감은 변수의 값을 변경하는 것이고, 포인터의 증감은 포인터가 가리키는 주소를 변경하는 것입니다.

8. lvalue와 rvalue가 무엇인가요?

답변: 변수는 lvalue이며 할당문의 왼쪽에 있을 수 있습니다. 숫자 리터럴은 rvalue이므로 할당할 수 없습니다.

9. 변수의 초기화 방법은 무엇입니까?

답변: 2가지 유형: 직접 초기화; 복사 초기화. 직접 초기화는 더 유연하고 더 효율적으로 수행됩니다.

10. 변수의 선언과 정의는 무엇인가요?

답변: 변수 선언의 주요 목적은 변수의 유형과 이름을 나타내는 것입니다. 변수 정의의 주요 목적은 동일한 경우 저장 공간을 할당하는 것입니다.

11. C++에는 어떤 종류의 범위가 있나요?

답변: 3가지 유형: 전역 범위, 로컬 범위, 명령문 범위.

12. 변수의 저장 유형은 무엇인가요?

답변: 4가지 유형: 자동 유형, 정적 유형, 레지스터 유형, 외부 유형.

13. C와 C++의 차이점은 무엇인가요?

답변: C 언어는 프로세스 지향적이며 구현 프로세스를 고려합니다. C++는 객체 지향적이며 전체 프로그램 모델을 고려합니다.

14. 매크로 정의와 연산자의 차이점은 무엇인가요?

답변: 매크로 정의는 C++의 전처리 명령 중 하나이며, 계산이나 표현식 풀이를 수행하지 않고 메모리나 컴파일 시간을 차지하지 않는 대체 작업입니다.

15. 가상함수와 순수가상함수의 특징은 무엇인가요?

답변: 가상 함수는 기본 클래스의 비정적 멤버 함수여야 하며 해당 액세스 권한은 보호되거나 공개될 수 있습니다. 순수 가상 함수는 가상 함수를 포함하는 클래스입니다. 추상 클래스이며 객체를 생성할 수 없습니다.

16. 순수 가상 기능을 사용하는 방법은 무엇입니까?

답변: 순수 가상 함수는 의미 없는 구현을 정의하는 데 사용되며 구체적인 구현을 위해 파생 클래스로 전달되어야 하는 추상 클래스의 메서드에 사용됩니다.

17. 포인터란 무엇인가요?

답변: 포인터는 메모리 주소를 저장하는 데 사용되는 변수입니다. 이는 단일 객체의 주소를 가리킵니다. void 포인터 유형 외에도 포인터의 데이터 유형은 다음과 같습니다. 주소를 가리키는 변수입니다.

18. const 객체에 대한 포인터와 const 포인터의 차이점은 무엇인가요?

답변: const 포인터 자체의 값은 변경할 수 없지만 포인터를 사용하여 포인터가 가리키는 개체의 값을 수정할 수 있습니다. const 변수에 대한 포인터는 포인터가 가리키는 const 변수의 값을 수정할 수 없습니다. , 그러나 포인터 자체는 재할당될 수 있습니다.

19. 배열 포인터와 포인터 배열의 차이점은 무엇인가요?

답변: 배열 포인터는 배열을 가리키는 포인터 변수입니다. 포인터 배열은 포인터 요소만 포함하는 배열이며 해당 요소는 동일한 유형의 다른 개체를 가리킬 수 있습니다.

20. 함수 포인터란 무엇인가요?

답변: 함수 포인터는 함수의 저장 공간 주소를 가리키는 포인터입니다. 함수 포인터에 값을 할당하고 함수 포인터를 통해 함수를 호출할 수 있습니다.

21. 참조와 가치 이전의 차이점은 무엇인가요?

답변: 값으로 전달하면 값의 복사본이 전송되며 형식 매개변수에 대한 함수의 연산은 실제 매개변수의 값에 영향을 주지 않습니다. 참조로 전달하면 참조 객체의 메모리 주소가 전송되고 함수의 연산은 형식 매개변수는 실제 매개변수에 영향을 미칩니다. 형식 매개변수의 값이 변경되면 실제 매개변수의 값도 변경됩니다.

22. 포인터와 참조의 차이점은 무엇인가요?

답변: (1) 참조는 역참조할 필요가 없으며 포인터는 역참조해야 합니다. (2) 참조는 정의될 때 한 번 초기화되고 그 이후에는 변경할 수 없지만 포인터는 변경할 수 없습니다. null이지만 포인터는 null일 수 있습니다. (4) 프로그램은 포인터 변수에 대한 메모리 영역을 할당하지만 참조는 메모리 영역을 할당할 필요가 없으므로 포인터 자동 증가 작업은 포인터 변수의 자동 증가입니다. , 기준 자동 증가 연산은 변수 값의 자동 증가입니다.

23. 객체지향과 프로세스지향의 차이점은 무엇인가요?

답변: 프로세스 지향은 알고리즘을 기반으로 하는 프로세스 중심 프로그래밍 아이디어입니다. 객체 지향은 메시지를 기반으로 하는 객체 중심 프로그래밍 아이디어입니다. 프로세스 지향 프로그래밍 언어의 구성: 프로그램 = 알고리즘 + 데이터, 객체 지향 프로그래밍 언어의 구성: 프로그램 = 객체 + 메시지.

24. 객체지향의 특징은 무엇인가요?

답변: 객체 지향의 세 가지 요소: 캡슐화, 상속, 다형성. 객체지향의 모든 객체는 클래스로 분류될 수 있습니다.

25. 클래스와 구조의 차이점은 무엇인가요?

답변: (1) 구조는 스택에 저장되며 클래스의 인스턴스화는 스택이나 힙에 저장될 수 있습니다. (2) 구조의 실행 효율성은 클래스의 실행 효율성보다 높습니다. 3) 구조 소멸자는 없지만 클래스에는 소멸자가 있습니다. (4) 구조는 상속될 수 없지만 클래스는 상속될 수 있습니다.

26. 정적 멤버에 액세스하는 방법은 무엇입니까?

정답 멤버는 클래스 인스턴스를 생성하지 않고 클래스 이름을 통해 직접 호출할 수 있지만 클래스 인스턴스를 통해 호출할 수도 있지만 맨 아래 레이어는 여전히 클래스 이름을 통해 호출됩니다. 방법은 권장되지 않습니다. 클래스의 정적 메서드는 클래스의 정적 멤버에만 액세스할 수 있습니다.

27. 다형성이란 무엇인가요?

답변: 다형성은 하위 클래스 개체를 상위 클래스 변수에 할당하는 것입니다. 상위 클래스 변수는 컴파일 및 런타임 중에 서로 다른 특성을 나타냅니다.

28. C++에서 다형성을 구현하는 방법은 무엇입니까?

답변: 다형성에는 동적 다형성, 정적 다형성, 함수 다형성, 매크로 다형성 등이 포함됩니다. 우리가 흔히 말하는 다형성은 상속 메커니즘과 가상 함수를 기반으로 구현되는 동적 다형성을 의미합니다.

29. 파생 클래스와 기본 클래스 간의 변환?

답변: 파생 클래스는 항상 기본 클래스의 참조 유형으로 변환될 수 있습니다. 기본 클래스에서 파생 클래스로 변환하려면 안전할 때 형변환을 사용해야 합니다.

30. 가상회원이란 무엇이며, 그 역할은 무엇인가요?

답변: 가상 함수의 기능은 동적 바인딩을 구현하는 것입니다. 프로그램이 가상 함수 이름 앞에 virtual 키워드를 찾은 후 자동으로 이를 동적 바인딩으로 처리합니다. 즉, 적절한 멤버를 동적으로 선택합니다. 프로그램이 실행 중일 때 기능을 수행합니다.

31. C++ 덮기와 숨기기 개요?

답변: (1) 덮는다는 것은 하위 클래스와 상위 클래스에 동일한 함수 이름과 매개변수를 가진 함수가 있다는 것을 의미하며, 상위 클래스의 함수는 가상 함수입니다. (2) 숨기는 것은 하위 클래스에 있다는 것을 의미합니다. 상위 클래스와 동일한 이름과 다른 매개변수를 가진 함수가 있는 경우 상위 클래스 함수가 ​​가상 함수인지, 동일한 함수 이름과 매개변수를 가진 함수가 있는지에 관계없이 상위 클래스 함수는 숨겨집니다. 이 경우 부모 클래스 함수인 경우에만 부모 클래스 함수는 클래스 함수가 ​​가상 함수가 아닌 경우에만 숨겨집니다.

32. 깊은 카피와 얕은 카피란 무엇인가요?

답변: 클래스에 리소스가 있는 경우 이 클래스의 리소스가 복사되는 경우를 전체 복사라고 합니다. 개체에 리소스가 있지만 복사 프로세스 중에 리소스가 복사되지 않는 경우 이를 얕은 복사본이라고 합니다.

33. 복사 생성자는 무엇이며 언제 호출됩니까?

답변: 복사 생성자는 동일한 클래스를 기반으로 하는 다른 개체의 생성 및 초기화를 완료하기 위해 호출됩니다. 복사 생성자가 사용되는 세 가지 상황이 있습니다. (1) 객체가 값으로 함수 본문에 전달됩니다. (2) 객체가 값으로 함수에서 반환됩니다. (3) 객체가 다른 객체를 통해 전달되어야 합니다. 개체.초기화.

34. 유형 변환 생성자가 무엇인가요?

답변: 클래스의 생성자에는 매개변수가 하나만 있고, 매개변수 유형은 클래스의 유형이 아니라 다른 유형입니다. 이 생성자를 유형 변환 생성자라고 하며, 클래스에서 동일한 데이터 값을 처리하는 데 사용할 수 있습니다. 다른 분야.

35. C++에서는 매개변수 수가 불확실한 함수를 지원하나요?

답변: C++에서는 숨겨진 매개변수 메커니즘을 통해 불확실한 매개변수가 있는 함수를 지원할 수 있습니다.

36. 인라인 함수란 무엇인가요?

답변: 클래스 선언 내에서 선언되거나 정의된 멤버 함수를 인라인 함수라고 합니다. 루프 문과 스위치 문은 인라인 함수 내에서 허용되지 않습니다.

37. 참조 형식 매개변수와 비참조 형식 매개변수의 차이점은 무엇인가요?

답변: 참조 매개변수는 매개변수 변수의 주소를 전달하는 것이며, 형식 매개변수에 대한 함수를 호출하면 실제 매개변수의 값을 수정할 수 있습니다.

38. 참조 매개변수 사용 시 문제점은 무엇입니까?

답변: const가 아닌 유형의 참조 매개변수를 호출할 때 실제 매개변수는 const 유형이 아니어야 하며, 실제 매개변수가 다음과 같은 경우 const 참조로 형식 매개변수 함수를 호출할 때 두 유형이 일치해야 합니다. 변수가 아니거나 유형이 일치하지 않는 경우, 함수는 실제 매개변수의 값을 저장하기 위해 이름 없는 임시 변수를 생성하고 이 형식 매개변수를 임시 변수에 대한 참조로 사용합니다.

39. 포인터 매개변수와 참조 매개변수의 차이점은 무엇인가요?

답변: 포인터 매개변수는 함수의 매개변수가 포인터라는 뜻입니다. 참조 매개변수처럼 함수 호출을 통해 실제 매개변수의 값에 영향을 미치지 않지만 호출 후에는 실제 매개변수의 개체를 수정합니다. 프로그램에서 포인터 매개변수를 가능한 한 적게 사용하는 것이 좋습니다. 이렇게 하면 프로그램의 가독성이 떨어지기 때문입니다.

40. 정적 함수란 무엇인가요? 정적 함수를 사용하는 방법은 무엇입니까?

답변: 정적 함수는 static 한정자로 수정된 함수입니다. 정적 함수에는 이 포인터가 없으며 정적 변수에만 액세스할 수 있습니다. 클래스의 함수 호출 결과가 개체 데이터 멤버에 액세스하거나 수정하지 않는 경우 해당 멤버를 정적 멤버 함수로 선언하는 것이 좋습니다.

41. 함수 오버로딩과 범위?

답변: 함수 오버로딩은 동일한 범위에서 이름은 같지만 매개변수 목록이 다른 여러 함수를 의미합니다.

42. 함수 오버로딩 시 실제 매개변수의 유형 변환을 구현하는 방법은 무엇입니까?

답변: 일치 함수 오버로딩 시 먼저 표준 변환을 통해 일치가 이루어집니다. 그렇지 않은 경우 클래스 유형 변환을 통해 일치가 이루어집니다.

43. 함수 템플릿이란 무엇인가요?

답변: 함수 템플릿 기술은 템플릿 기술을 사용하여 매개변수화된 유형의 비멤버 함수를 정의하는 것을 말하며, 이를 통해 프로그램은 서로 다른 매개변수 유형을 사용하여 동일한 함수를 호출할 수 있습니다.

44. 클래스 템플릿이란 무엇인가요?

답변: 클래스 템플릿은 템플릿 기술을 사용하여 다른 데이터 유형을 관리할 수 있는 일반 데이터 유형을 설명하는 클래스입니다. 클래스 템플릿 기술은 다른 유형(큐, 연결된 목록, 스택 등)을 포함하는 컨테이너 클래스를 만드는 데 자주 사용됩니다.

45. 제네릭 프로그래밍이란 무엇인가요?

답변: 일반 프로그래밍은 특정 클래스의 구현과 독립적인 방식으로 코드를 작성하고 다양한 유형에 대한 공통 구현을 제공하는 것입니다.

46. C++로 일반 프로그래밍을 구현하는 방법은 무엇입니까?

답변: C++의 일반 프로그래밍 구현은 C++의 템플릿 기술을 사용하여 구현되며 주로 함수 템플릿과 클래스 템플릿을 설계합니다.

위 내용은 C++ 기본 지식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.