티스토리 뷰

안녕하세요, IT디자이너입니다.

 

이번에는 C++의 클래스 문법과 활용방법에 관하여 포스팅하도록 하겠습니다.!

 

C언어의 구조체가 있다면 C++은 클래스가 있습니다. 이 둘의 차이중 가장 큰 차이는 클래스는 함수를 정의할 수 있다는 것입니다. 

 

지금부터 차근 차근 설명을 이어가겠습니다.

 

1. 접근제어자

"접근 제어자"란 사용자가 접근할 수 있는 범위를 지정할 수 있습니다. 즉, 사용자 접근이 제한된 인터페이스를 구축할 수 있습니다.

 

private로 접근 제어자는 외부접근 또는 파생 클래스로부터의 접근이 불가능합니다. 

이와 반대로 public은 멤버에 관한 모든 접근이 가능합니다. 

(클래스 안에서 정의된 "변수"는 "멤버 변수" 라고 하며 함수는 "멤버 함수"라고 합니다. )

 

그리고 3번째 접근제어자로 protected가 있습니다. 

 

모든 멤버에 관한 접근이 차단되지만, 상속관계에 있는 파생 클래스로부터의 접근은 허용됩니다. !

 

2. 생성자(constructor)와 소멸자(Destructor)

생성자와 소멸자는 우리가 생성하거나 사용하지 않아도 자동으로 호출되는 함수입니다. 

 

또한 함수임에도 불구하고 반환 형식이 없다 라는 것입니다.

 

만약, 사용자가 별도로 생성자를 정의하지 않으면 컴파일러가 자동으로 블럭안의 아무런 코드가 없는 생성자와 소멸자를 생성합니다. 

 

main 함수 내에서 선언시 main함수의 코드가 실행이 되고 main함수가 완전히 종료되면 "자동으로" 클래스의 소멸자가 호출됩니다. !!!!!  (소멸자는  클래스 이름 앞에 "~" 기호가 사용됩니다.    // ex) ~Person() 입니다. )

 

또한, 디폴트 생성자를 사용하지 않고 멤버변수를 초기화할 수 있는 생성자를 정의할 수 있습니다.

 

이렇게 말이죠!

 

3. 생성자를 통한 참조형 객체 초기화 방법

위와 같이 선언과 동시에 생성자를 통한 참조변수가 초기화가 되어야합니다.  하지만,

 

위 사진과 같이 매개변수를 대입연산을 이용하는 생성자는 참조변수의 초기화가 불가능하기 때문에 오류가 발생합니다. 

 

4. 클래스 함수의 디폴트 선언과 삭제

 

위와 같이 선언된 함수에서 대입연산자와 default 예약어를 사용해서 별도로 정의를 할 필요가 없어집니다.

 

또한,

 

위와 같이 delete 예약어를 활용해서 디폴트 생성자 사용을 막을 수 있습니다.

 

5. this 포인터

바로 자기 "자신을 가리키는 포인터" 라고 생각하시면 될것 같습니다. ! this는 객체를 생성한 인스턴스의 주소값으로서 멤버변수의 소속을 정확히 하여 사용할 수 있습니다. 

 

위와 같이 동일하게 출력은 되지만 컴파일 단계에서 컴파일러가 this->num 으로 변경하여 컴파일 합니다.

 

6. 상수형 클래스 함수!

마지막으로 상수형 클래스 함수에 관하여 설명드리도록 하겠습니다.

 

 

상수형 클래스 함수는 오로지 읽기만 가능하며!! 쓰기는 불가능한 함수입니다. 또한 위 사진처럼 상수형 메소드가 아닌 일반 클래스 메소드는 상수형 함수 내에서 호출이 불가능합니다. 

 

이러한 방식의 원리는 const Person *this 로서 this가 가리키는 값의 변경을 불가능하게 만드는 것입니다.!! 

 

조금 더 자세한 원리는 추후 포스팅에 설명드리도록 하겠습니다. 

 

감사합니다.!

'Language > C++ 언어' 카테고리의 다른 글

C++과 C의 차이 -2  (0) 2020.02.11
C++과 C언어의 차이  (0) 2020.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함