class Car
{
private:
char * name;
int Speed;
public:
ShowCarState(){
cout << name << endl;
}
}
class
키워드로 class를 선언한다 명시해준다.
private:
밑의 변수나 함수는 class 안에서만 접근가능하다.
public:
밑의 변수나 함수는 어디서든 접근가능하다.
struct과 class의 차이는 기본 접근제어 지시자가 struct는 public, class는 private이라는 것이다.
보통 c++에서는 클래스를 3개의 파일로 분할해서 작성한다.
만약에 Car라는 클래스를 만든다면
Car.h
#pragma once
class Car
{
private:
char * name;
int fuel;
public:
void ShowCarState();
void Accel();
}
Car.cpp
#include "Car.h"
#include <iostream>
void Car::ShowCarState()
{
std::cout << ...;
...
}
void Car::Accel()
{
...
}
main.cpp
#include "Car.h"
#include <iostream>
int main()
{
Car car;
car.ShowCarState();
...
}
만약 멤버함수를 inline으로 선언한다면 헤더파일에서 선언해야한다.
#include "Car.h"
int main()
{
Car car1;
car.Accel();
}
위와 같은 상황에서 Accel
함수가
- inline 함수가 아니라면 -> 컴파일시
Accel
이Car
클래스의 멤버함수인지만 확인하고 컴파일 종료한다.- inline 함수라면 -> 컴파일 시
Accel
몸체로 치환해야 하기 때문에Accel
정의에 대한 참조가 있어야한다.
따라서 헤더파일에 함수의 정의가 있어야지 컴파일 에러가 발생하지 않는다.