* 프로그래머스, 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 5기 강의 수강 내용을 정리하는 포스팅.
* 원활한 내용 이해를 위해 수업에서 제시된 자료 이외에, 개인적으로 조사한 자료 등을 덧붙이고 있음.
int a = 10;
int *ptr = &a; // a의 주소를 ptr에 저장
printf("%d", *ptr); // ptr이 가리키는 값을 출력
struct Point {
int x;
int y;
};
struct Point p1 = {10, 20};
union Data {
int i;
float f;
};
union Data d;
d.i = 10; // 같은 메모리를 공유
enum Color {RED, GREEN, BLUE};
enum Color myColor = GREEN;
int *arr = (int *)malloc(5 * sizeof(int));
free(arr);
class Car {
public:
string brand;
Car(string b) { brand = b; }
};
Car myCar("Tesla");
객체를 정의하고 생성하며, 상속과 메서드 공유를 통해 재사용성을 제공하는 프로그래밍 개념.
어떤 객체를 통해 인스턴스를 생성하고, 메서드 등을 상속하여 동작을 확장하거나 재정의할 수 있는 방법.
객체(Object): 클래스에서 만들어진 실제 데이터.
클래스(Class): 객체를 정의하는 설계도.
인스턴스(Instance): 클래스를 기반으로 생성된 구체적인 객체.
클래스는 객체 지향 프로그래밍의 주요 원칙(추상화, 캡슐화, 상속, 다형성)을 구현하기 위한 도구.
그런데 자바스크립트(JavaScript)는 클래스를 사용하지 않는다. 처음 개발되었던 때부터 프로토타입(prototype)이라는 개념을 사용하여 객체 지향 프로그래밍(OOP)을 구현했기 때문.
자바스크립트는 초기부터 웹 브라우저에서 경량 스크립트 언어로 설계되었다.
클래스 기반 언어(Java, C++ 등)는 정적(static)이며 엄격한 구조를 요구하며, 개발자는 클래스, 메서드, 상속 관계 등을 명확히 정의해야한다.
자바스크립트의 주요 목표는 비개발자나 초급 개발자도 쉽게 사용할 수 있는 언어를 만드는 것.
따라서 클래스 기반 언어보다 더 유연하고 간단한 방식으로 객체 지향 프로그래밍을 구현하고자 했다.
그래서 나온 것이 프로토타입. 더 간단히 참조를 연결하여 속성과 메서드를 상속하므로, 런타임에 유연하게 변경할 수 있다. 라고 한다..
class Car {
public:
string brand;
Car(string b) { brand = b; }
};
class Vehicle {
public:
string brand = "Ford";
};
class Car : public Vehicle {
public:
string model = "Mustang";
};
class Math {
public:
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
};
class Animal {
public:
virtual void sound() { cout << "Animal sound"; }
};
class Dog : public Animal {
public:
void sound() override { cout << "Bark"; }
};
class Animal {
public:
virtual void makeSound() = 0; // 순수 가상 함수
};
class Dog : public Animal {
public:
void makeSound() override { cout << "Bark"; }
};
코드 복사
auto sum = [](int a, int b) { return a + b; };
cout << sum(5, 3);