Programming Language/C++(73)
-
Part2::Ch 01. 클래스 - 06. this 포인터
1. this 포인터this 포인터는 C++에서 클래스의 멤버 함수 내부에서 자신을 가리키는 포인터로 멤버 함수 안에서 this를 사용하면그 함수를 호출한 객체 자신의 주소를 반환한다.class Car {private: int speed;public: void setSpeed(int speed) { this->speed = speed; }};이렇게 사용이 되는데 여기서 this는 Car* 타입으로 해당 객체를 가르키는 포인터로 this -> speed는 멤버함수 speed를 의미하고 보통 speed = speed; 처럼 매개변수의 이름과 멤버함수의 이름이 같을때, 자기 자신의 주소를 리턴할 때, 자기자신(객체)를 반환하려고 할 때, 자기 자신과 다른 객체 비교할 때 this..
2025.04.29 -
Part2::Ch 01. 클래스 - 05. 선언과 정의의 분리 & 전방 선언
1. 선언과 정의의 분리 C++에서는 One Definition Rule(ODR, 단일 정의 규칙)이라고 해서 하나의 엔티티(함수, 변수, 클래스 등)는 프로그램 전체에서 단 하나의 정의만 가져야 한다라는 규칙이 존재하고 이는 C++의 컴파일 및 링크 과정에서 매우 중요한 요소가 된다. ODR의 핵심개념하나의 프로그램 전체에서 특정 이름(함수, 전역 변수, 클래스 등)은 오직 하나의 정의 만 존재해야 함여러 번 선언은 가능하나 정의는 단 한 번 만 가능하고 만약이를 위배해서 여러 번 정의가 존재하면 링커 에러(linker error)가 발생함 우선 정의는 선언을 포함한 개념으로 정의만 하더라도 함수, 전역 변수, 클래스등의 사용은 문제가 없다. 함수의 경우는 프로토 타입이란것으로 함수의 선언을 따로 분..
2025.04.29 -
Part2::Ch 01. 클래스 - 04. 파괴자(Destructor)
1. 파괴자란객체가 소멸될 때 자동으로 호출되는 특수한 함수로 객체가 메모리에서 삭제될 때, 그 전에 해야 할 정리(clean-up) 작업을 담당하는 함수다. 2. 파괴자의 기본 형태~클래스이름();클래스 명앞에 ~(틸트)를 붙여서 생성하며 반환형도 없고 매개변수도 없으며 딱 하나만 정의할 수 있다. 3. 파괴자가 호출되는 시점파괴자는 지역 변수로 생성된 객체가 스코프를 벗어날 때 delete로 객체를 지울때 프로그램 종료 시점에 자동으로 호출된다. 4. 파괴자 호출의 예시 파괴자가 꼭 필요한 경우는 멤버 변수를 동적할당해줄 경우엔 반드시 delete로 해제를 해야하기 때문에 class Car {private: int* speed;public: Car(int s) { speed =..
2025.04.29 -
Part2::Ch 01. 클래스 - 03. 생성자(Constructor)
1. 생성자란생성자는 객체가 생성될 때 자동으로 호출 되어 멤버 변수들을 초기화해주는 특수한 함수이다.생성자는 클래스와 이름이 같고 반환형이 없으며 객체가 만들어질때 자동으로 호출된다. 클래스는 이전에 봤던것과 같이 멤버 변수는 private로 제한하여 외부에서 멤버 변수에 접근할수 없도록 만드는 것이 보통이다.또한 만약 public으로 생성해서 만들어준다고 하더라도 class Car {public: int speed;}int main() { Car car; std::cout 이렇게 구현되어 있을때 speed는 초기 값이 들어가 있지 않기 때문에 호출하면 쓰레기 값이 출력되게 된다. 그래서 객체를 만들자마자 자동으로 초기값을 설정해주는 함수가 필요했기에 나온 것이 생성자이다. 2. 생성자..
2025.04.29 -
Part2::Ch 01. 클래스 - 02. 클래스와 객체
1. 클래스데이터(속성)와 기능(함수)을 하나로 묶어 설계하는 틀(template)같은 것으로 어떤 객체를 만들기 위한 설계도라고 생각하면 된다 기존에 배웠던 struct와 비슷하다고 생각하면 된다. 2. 클래스의 정의class 클래스명 { // 멤버변수 및 함수}와 같이 정의하고 이를 실제 정의하는 예시는 class Car { int speed; std::string color;}와 같이 선언하면 된다. 3. 클래스의 선언클래스의 선언, 즉 사용하는 방법은 클래스명 객체명;과 같이 사용하며int main(){ Car car;}이렇게 정의가 가능하다. 이렇게 선언한 클래스를 객체라고 하며 클래스 자체는 실체가 아니고 틀이며 위처럼 선언을 해서 만들어진 객체가 진짜 클래스의 실체가 된다. ..
2025.04.29 -
Part2::Ch 01. 클래스 - 01. 객체지향 개괄
1. 객체지향이란 데이터와 데이터를 처리하는 함수를 하나의 '객체'라는 단위로 묶어 다루는 프로그래밍 패러다임으로 단순하게 설명하면 변수랑 그 변수를 다루는 함수까지 한 덩어리로 묶어서 하나의 '물건'처럼 다루자라는 것으로 데이터와 기능을 같이 묶어놓고 다루는 방식을 말하는 것이다 현실 세상을 비유해보면 만약 예를 들어 자동차의 경우는 어떤 색상인지, 얼마나 속도를 내는지에 대한 데이터가 존재하고 이 자동차가 전진하고, 후진하고, 멈추는 등의 기능이 존재하는데 이전 절차 지향의 경우는 이를 각각 따로 관리했었다.#include #include // 1. 데이터 구조만 따로 정의struct CarData { int speed; std::string color;};// 2. 동작(기능)들은 따로 ..
2025.04.29