구조체와 클래스 비교
include <stdio.h>
/*
1. 구조체는 상속을 지원하지 않는다.
2. 구조체에는 함수 포인터로 정의만 가능.
*/
typedef struct a{
int size;
char* color;
int *add(int, int);
} Car;
Car* initCar() {
Car* car;
car = (car*)malloc(sizeof(car*));
car.size = 50;
car.color = "red";
return car;
}
int add(int a, int b) {
return a + b;
}
class Car {
int size;
String color;
/*
생성자 함수
1. void* 사용
2. 상속이 안된다.
3. 인스턴스가 생성될 때 멤버변수를 초기화 한다.
4. return 값이 없다.
*/
Car(int size, string color) {
this.size = size;
this.color = color;
}
/*
java에서 add라는 함수는 new로 인스턴스를 생성하고
add라는 함수를 참조하는 포인터를 생성하는 것이라고 생각하면 된다.
=> 그래서 인스턴스를 생성해도 멤버변수는 새롭게 메모리를 할당받아
기존의 함수를 참조하는 참조 변수를 생성하는 것이다.
*/
int add(int a, int b){
return a + b;
}
}
Design Pattern