c++ 개념 정리 2

xx.xx·2024년 3월 4일

c++

목록 보기
7/8

클래스와 구조체의 차이는 무엇인가요?

클래스와 구조체 모두 메서드와 데이터를 함께 캡슐화하는 사용자 정의 타입입니다.
클래스는 객체 지향 프로그래밍의 핵심이며 구조체는 데이터 저장에 주로 사용됩니다.
주요 차이점은 접근 제어로, 클래스는 기본적으로 private이고 구조체는 public 입니다.

포인터와 참조 차이점?

포인터는 변수의 메모리 주소를 저장하고, 이 주소를 통해 변수를 간접적으로 조작할 수 있습니다.
참조는 변수의 별칭과 같은 것으로 어떠한 변수와 동일한 주소를 가리킵니다.
참조의 경우 초기화 이후에는 다른 변수로 변경할 수 없습니다. 포인터보다 안전하고 사용하기 쉬운 방식으로 변수에 접근 가능합니다.

상속과 구성의 차이?
상속은 한 클래스가 다른 클래스의 속성과 매서드를 상속받는 것을 말합니다.
(is-a 관계)

구성은 한 클래스가 다른 클래스의 객체를 멤버 변수로 포함하는 것을 말합니다.
(has-a 관계)

가상 함수와 순수 가상 함수 그리고 추상 클래스?

가상 함수는 베이스 클래스에서 선언되고, 파생 클래스에서 재정의할 수 있는 함수입니다. 이를 통해 다형성을 구현할 수 있씁니다.

순수 가상 함수는 선언만 있고 구현이 없는 가상 함수입니다.
순수 가상 함수를 하나 이상 포함하는 클래스는 추상 클래스라고 칭하며, 이 클래스의 인스턴스를 직접 생성할 수 없습니다.
추상 클래스는 파생 클래스가 구현해야 하는 인터페이스를 정의하는데 사용됩니다.

오버로딩과 오버라이딩?

오버로딩은 같은 이름의 함수를 매개변수의 타입이나 개수를 다르게 하여 여러번 정의하는 것을 말합니다. 이를 통해 같은 이름의 함수를 다양한 입력을 처리할 수 있습니다.

오버라이딩은 파생 클래스에서 베이스 클래스의 함수를 재정의하는 것을 말합니다.
이는 다형성을 실현하는 핵심 매커니즘입니다.

메모리 누수

프로그램에서 동적으로 할당한 메모리 영역이 더 이상 필요없게 되었음에도 해제하지 않고 남아 있는 상태를 말합니다. 메모리 누수가 계속되면 사용 가능한 메모리 양이 감소하여 시스템의 성능에 부정적인 영향을 미칠 수 있습니다.

스마트 포인터?

일반 포인터와 같이 메모리를 가르키지만, 자동으로 메모리를 관리하여 메모리 누수를 방지합니다. 주요 스마트 포인터에는 shared_ptr, unique_ptr가 있습니다.

다형성?

객체가 여러 형태를 가질 수 있는 성질을 말합니다. c++에서는 주로 가상 함수를 통해 구현되며, 이를 통해 파생 클래스의 객체들이 자신의 메서드를 가지고 있음에도 불구하고 기반 클래스의 포인터나 참조를 통해 조작될 수 있습니다. 이는 코드의 재사용성과 유연성을 증가시킵니다.

C++에서의 예외처리?

try, catch, trhow 키워드를 사용하여 예외를 처리합니다.
try 블록 내에서 실행되는 코드가 예외를 발생시킬 수 있으며, 해당 예외는 catch 블록에서 처리됩니다. 예외는 throw 키워드를 사용하여 발생시킬 수 있으며, 이를 통해 실행 흐름을 현재 함수에서 호출자 함수로 전환시키면서 오류를 처리할 수 있는 방법을 제공합니다.

0개의 댓글