[C++] Class

dd_ddong·2022년 7월 11일
0

c++

목록 보기
13/38

Class 선언

class Car
{
private:
	char * name;
    int Speed;
public:
	ShowCarState(){
    	cout << name << endl;
    }
}

class 키워드로 class를 선언한다 명시해준다.
private: 밑의 변수나 함수는 class 안에서만 접근가능하다.
public: 밑의 변수나 함수는 어디서든 접근가능하다.

struct과 class의 차이는 기본 접근제어 지시자가 struct는 public, class는 private이라는 것이다.

C++ 파일 분할

보통 c++에서는 클래스를 3개의 파일로 분할해서 작성한다.
만약에 Car라는 클래스를 만든다면

  • Car.h -> class 선언부, 헤더파일
  • Car.cpp -> class 정의, cpp파일
  • main.cpp -> class 호출부, cpp파일

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 함수선언시

만약 멤버함수를 inline으로 선언한다면 헤더파일에서 선언해야한다.

#include "Car.h"

int main()
{
	Car car1;
    car.Accel();
}

위와 같은 상황에서 Accel함수가

  1. inline 함수가 아니라면 -> 컴파일시 AccelCar클래스의 멤버함수인지만 확인하고 컴파일 종료한다.
  2. inline 함수라면 -> 컴파일 시 Accel몸체로 치환해야 하기 때문에 Accel정의에 대한 참조가 있어야한다.

따라서 헤더파일에 함수의 정의가 있어야지 컴파일 에러가 발생하지 않는다.

0개의 댓글