업데이트:

태그: ,

카테고리:



REF : 윤성우의 열혈 C++

C++의 구조체는 클래스의 일종.

클래스는 변수를 선언할 때, 선언과 동시에 초기화하지 못한다.

class	A
{
	char	name[];
	int		test1;
	int		test2;
};

int main()
{
	A	test = {"asdf", 100, 100};
}

클래스 내부의 변수는 클래스 내에 선언된 함수에서만 사용할 수 있다.
따라서, 클래스는 정의를 하는 과정에서 각각의 변수와 함수의 접근 허용범위를 별도로 선언해야한다.


접근제어 지시자

접근 제어 지시자가 선언된 줄 아래의 변수나 함수는 해당 접근제어 지시자의 의미대로
호출범위가 한정된다.

  • public : 어디에서든 접근 허용
  • protected : 상속관계 하에서, 유도 클래스에서 접근 허용
  • private : 클래스 내에서만 접근 허용
  1. 접근제어 지시자가 선언되면 그 이후에 등장하는 변수, 함수는 해당 접근제어 지시자가 허용하는 범위 내에서만 접근할 수 있다.
  2. struct 키워드로 구조체를 정의하면 접근제어 지시자가 없다면 모든 변수와 함수는 public이 된다.
  3. class 키워드로 클래스를 정의하면 접근제어 지시가자 없다면 모든 변수와 함수는 private가 된다.


객체, 멤버변수, 멤버함수

구조체와 클래스는 변수의 성격만 지니지 않는다.
각각의 함수를 사용할 수 있어서 변수의 성격만 지니지 않기때문에 객체라는 표현을 사용한다.

해당 클래스를 구성하는 변수를 멤버 변수
클래스를 구성하는 함수를 멤버 함수라고 한다.


C++에서 클래스 분할

C++은 클래스별로 헤더파일과 소스파일을 따로 생성한다.
A라는 클래스가 있다면,

A.h A클래스의 선언
A.cpp A 클래스의 정의(멤버함수 정의)

컴파일러는 A.h를 전처리 과정에서 가장 먼저 처리해 include하는데,
만약 A.cpp 및 이를 사용하는 소스 파일들에서 A.h에 선언된 클래스의 접근제어 지시자를 어기는 등의
오류를 범하면 오류를 잡아내게된다.

단, 인라인 함수는 헤더파일에 함께 넣어야한다.
인라인 함수가 전처리 과정에서 인라인 함수의 몸체부분이 함수 호출부분과 대체되기때문에,
헤더파일에 미리 넣어야한다.

댓글남기기