LANG/C++

[C++]03-2.클래스(Class)와 객체(Object)

혀니리리 2023. 5. 12. 13:49
728x90

1.클래스와 구조체의 유일한 차이점

struct Car

{

}

struct 대신에 class로 바꾸면 그냥 class임

 

class Car

{

}

 

Car run99; (0)

Car run99 = {"run99", 100, 0}; (x)

클래스는 이런 식으로 변수 선언 못함

따로 초기화하는 함수를 만들어줘야 함

 

접근과 관련해서 별도의 선언을 하지 않으면, 클래스 내에 선언된 변수 및 함수에 대한 접근 허용하지 않으니 접근과 관련된 지시를 별도로 내려야 함!

 

2.접근제어 지시자(접근제어 레이블)

1)public : 어디서든 접근허용

2)protected : 상속 관계에 놓여있을 때 , 유도클래스에서의 접근허용

3)private : 클래스 내(클래스 내 정의된 함수)에서만 접근허용

 

구조체와 클래스 둘 다 접근제어 지시자의 선언이 가능하고 그 의미도 동일하지만,

유일한 차이점:

접근제어 지시자를 선언하지 않았을 때 class는 private로, 구조체는 public으로 선언할 뿐임

왜 굳이 protected? => 나중에 나올 정보은닉과 관련

 

3.용어정리: 객체(Object), 멤버변수, 멤버함수

구조체나 클래스는 변수라고 부르지 않고 '객체(Object)'라고 부름

그 안에 구성된 변수를 '멤버 변수', 클래스를 구성하는 함수를 가리켜 '멤버 함수'라고 부름

 

4.C++에서의 파일분할

C++은 클래스별로 헤더파일과 소스파일을 생성해서 클래스의 선언과 정의를 분리하는 일이 많음.

1.Car.h : 클래스의 선언을 담음

2.Car.cpp:클래스의 정의(멤버함수의 정의)를 담음

g++ -Wall main.cpp Car.cpp -o hello

 

 

인라인 함수는 헤더파일 안에 넣기!

728x90