Data field : 해당 객체의 상태 등의 정보를 담고 있음
Functions : 객체가 수행할 수 있는 행동을 정의
Object to Class
실제 여러 객체들의 공통적인 특성을 포착해 클래스로 구성
Class to Parent Class
여러 관계된 클래스들의 공통점을 포함하는 부모 클래스를 구성
Private과 Public 한정자를 통해 구현Private 필드에, 외부에 공개될 요소들은 Public 필드에 포함시킴class Stock{
private:
int value;
public:
Stock(int v) : value(v) {}
int getValue() {
return value;
}
};
getValue() 함수를 통해 값을 가져와 사용class Animal{
private:
int age;
};
class Dog : Animal{};
class Cat : Animal{};
Animal 클래스는 Dog, Cat 클래스의 부모 클래스로, 두 클래스 모두 age라는 필드를 가지고 있음virtual 함수를 포함하고, 이를 하위 클래스에서 구체적으로 구현하는 override를 통해 서로 다른 기능을 수행하도록 할 수 있음class Animal{
public:
virtual void Sound(){};
};
class Dog : Animal{
public:
void Sound() override
{
printf("Woof Woof\n");
}
};
class Cat : Animal{
public:
void Sound() override
{
printf("Meow Meow\n");
}
};
int main()
{
Dog dog;
dog.Sound();
Cat cat;
cat.Sound();
return 0;
}
Woof Woof
Meow Meow
Sound()라는 함수를 호출했지만 각각의 클래스에서 구현하고 있는 형태가 다르기 때문에 각기 다른 출력 값을 보여줌Struct와 유사하며, 실제로 이를 바탕으로 발전시킨 것이 Class 임.을 통해 접근하는 것도 동일함class Stock{
public:
Stock(int v) : value(v) {}
int value;
int getValue() {
return value;
}
};
struct Cash
{
int amount;
Cash(int a) : amount(a) {}
};
int main()
{
Stock stock(100);
printf("%d\n",stock.value);
Cash cash(10);
printf("%d\n",cash.amount);
return 0;
}
100
10
struct는 기본 필드의 접근 레벨이 public이며 class는 private 이라는 차이점이 있음struct 구조를 유지시킨 이유는 C언어로 작성된 코드를 C++에서도 사용하기 유리하도록 하기 위해 이를 유지함