반응형

cpp 7

[TIL] 20230727

오늘 공부한 내용📓 - C++ 개념 공부 클래스 포워드 선언(Forward Declaration) 포워드 선언이란, 클래스의 선언을 미루어서 순환참조를 피하는 방법 순환참조는 A.hpp 파일과 B.hpp 파일에서 서로를 include 하는 상황에서 발생하는 에러 //A.hpp #include "B.hpp" class A { //클래스 내용 } //B.hpp #include "A.hpp" class B { //클래스 내용 } 컴파일러가 클래스를 정확히 인식하지 못하여 에러가 발생함 클래스의 멤버 변수나 멤버 함수를 선언하지 않고, 클래스의 이름만을 미리 선언하는 방법 해당 클래스를 사용하는 코드에서는 클래스의 세부 구현을 알 필요 없이 클래스의 포인터나 참조를 사용할 수 있음 클래스의 멤버 변수나 멤버 함..

TIL::Today I Learn 2023.07.28

[TIL] 20230726

오늘 공부한 내용📓 - C++ 개념 공부 추상화(Abstract) 객체의 공통적인 특징과 기능을 하나의 추상 클래스로 표현하는 것 실제로 구현되지 않은 순수한 가상 함수들을 가지고 있는 추상 클래스를 의미 추상 클래스는 인스턴스를 생성할 수 없으며, 그 자체로 완전한 클래스가 아님 추상 클래스는 단지 인터페이스 역할이며, 이를 상속받은 파생 클래스에서 정의된 순수 가상 함수들을 반드시 구현하여야 함. 이를 통해 다형성을 구현하는 기반을 마련하고, 다른 클래스들 간의 공통된 인터페이스를 정의하여 객체 지향 프로그래밍의 유연성과 재사용성을 증가 추상 클래스를 정의하기 위해서는 하나 이상의 순수 가상 함수를 포함해야 함 순수 가상 함수(pure virtual function)는 ‘virtual’ 키워드와 함께..

TIL::Today I Learn 2023.07.28

[TIL] 20230723

오늘 공부한 내용📓 - C++ 개념 공부 가상 소멸자 클래스 상속 시, 해당 클래스의 소멸자도 가상 소멸자로 선언해야 함 가상 소멸자로 선언하지 않으면, 해당 클래스를 동적으로 할당하고 삭제 시, 메모리 누수나 undefined behavior 문제가 발생할 수 있음 부모클래스에서 가상 소멸자로 선언되지 않는다면, 자식 클래스의 객체를 가리키는 포인터가 삭제될 때 부모 클래스의 소멸자만 호출됨. 자식 클래스의 소멸자는 호출되지 않아 메모리 누수 발생함 const Animal* j = new Dog(); 위 상황은 업캐스팅(Upcasting) 이라고 하며, 파생 클래스의 객체를 기본 클래스의 포인터 또는 참조형으로 변환하는 것 위 코드처럼 부모 클래스인 Animal 클래스의 포인터인 j 에 Dog 클래스의..

TIL::Today I Learn 2023.07.28

[TIL] 20230721

오늘 공부한 내용📓 - C++ 개념 공부 다이아몬드 상속 하나의 클래스가 두개 이상의 클래스로부터 상속 받는 구조 A / \ B C \ / D 다이아몬드 상속에는 D 클래스에서 A 클래스의 멤버 변수나 멤버 함수에 접근할 때, B나 C 중 어떤 클래스를 기반으로 하는지 모호하다는 문제가 있어 잘 사용하지 않는 상속 방법 C++ 에는 다이아몬드 문제를 해결하기 위해 가상 상속을 지원함. 가상상속은 다이아몬드 상속 구조에서 공통된 기본 클래스를 가상으로 상속하여, 다이아몬드 구조를 일반적인 트리구조로 바꿔주는 기법 virtual 키워드를 사용하여 공통된 클래스를 가상으로 상속 class A { // ... }; class B : virtual public A { // ... }; class C : virtu..

TIL::Today I Learn 2023.07.28

[TIL] 20230719

오늘 공부한 내용📓 - C++ 개념 공부 클래스 상속 기존 클래스의 특성과 기능을 새로운 클래스가 물려받는 것 상속을 통해 기존 클래스의 멤버 변수와 멤버 함수를 그대로 사용하거나, 새로운 멤버 변수와 멤버 함수를 추가하여 새롭게 정의할 수 있음 상속을 통해 만들어진 새로운 클래스를 ‘파생 클래스’ 또는 ‘하위 클래스’ 라고 하며, 기존 클래스는 ‘기본 클래스’ 또는 ‘상위 클래스’ 라고 함 클래스 상속 방법 class BaseClass { // 기본 클래스의 멤버 변수와 멤버 함수 선언 } class DerivedClass : access-specifier BaseClass { // 파생 클래스의 멤버 변수와 멤버 함수 선언 } BaseClass : 기본 클래스 DerivedClass : 파생 클래스로..

TIL::Today I Learn 2023.07.28

[TIL] 20230718

오늘 공부한 내용📓 - C++ 개념 공부 신발끈 공식 삼각형의 넓이를 구하는 공식 중 하나 (다각형도 가능) 삼각형의 반시계 방향으로 점 P1, P2, P3 이 있을 때, 붉은 화살표로 이어진 것끼리 곱한 뒤 모두 더하고, 초록 화살표로 이어진 것끼리 곱한 뒤 뺀 후, 절댓값을 구하면 그것이 넓이가 됨 위 내용으로 정리한 수식 참고자료 https://chemicals1234.tistory.com/18 제가 공부한 내용을 기록하고 있습니다. 혹시 수정이 필요한 부분이 있다면, 댓글로 지적 부탁드립니다! 선한 관심과 도움 감사드립니다😊

TIL::Today I Learn 2023.07.28
반응형