질문과 답변

클래스와 객채의 관계에 대한 질문 날짜:2020-3-16 6:11:39 조회수:111
작성자 : Air
포인트 : 83
가입일 : 2020-02-15 17:44:18
방문횟수 : 21
글 13개, 댓글 9개
소개 :
작성글 보기
쪽지 보내기
객체가 클래스에서 인스턴스될때 그 값?, 구조? 가 어떻게 되는지 궁금합니다.
예제:
#include
 
class Time
{
private:
     int hour,min,sec;
 
public:
     void SetTime(int h,int m,int s) {
          hour=h;
          min=m;
          sec=s;
     }
     void OutTime() {
          printf("현재 시간은 %d:%d:%d입니다.\n",hour,min,sec);
     }
};
 
void main()
{
     Time Now;
 

}
여기서 Now의 값? 구조?는 어떻게 되며 Time형이란 무엇이고 어떻게 되는지 궁금합니다.
이 질문은 구조체와 구조체 변수의 관계에 대해서도 적용됩니다
 

목록보기 삭제 수정 신고 스크랩

Program 3월17일 1:26:48  

class Time
{
...
};
이 선언에 의해서 Time 이라는 자료형을 하나 선언하여 컴파일러에게 인식시키는 것입니다.
그러니까 우리가 int i; 또는 char c; 처럼 int , char 라는 자료형이 있듯이 이것들은 기본자료형이고
Time은 내가 만든 사용자정의 자료형 인데 둘 다 똑 같이 작용합니다.

int i; 처럼 Time Now; 도 Time형 변수 Now를 하나 선언하였습니다.
이 Now 에 값을 대입하는 일만 남았지요

대입은 i=1234; 하듯이 Now.hour=10; 이렇게 하면 되지만
자체 초기화 함수 SetTime이 있으므로 Now.SetTime(1,2,3); 해주면
이제 Now에 있는 멤버 hour,min,sec가 1,2,3 각각 대입되어 있습니다.
그렇게 사용해 먹는 것입니다

위 내용은 아마 교재에 나와 있는 정도입니다

Air 3월17일 6:20:02  

그러면 now는 time과 똑같은 구조를 가지게 되는 건가요?

Air 3월17일 6:20:12  

잘 이해가 안되네요...

Program 3월18일 10:33:17  

now는 Time과 똑같은 구조를 가집니다
now.hour 와 now.min now.sec 이렇게 세게의 멤버를 가지고 있죠
단 위치라든지 크기라든지 이런 것들은 컴파일러 만든 회사에서 자기들 필요에 따라 재배치나
최적화를 위한 조정등으로 구조가 좀 다를 수도 있지만 이 내용은 우리가 프로그래밍 하는데 아무
상관없이 우리는 단지 3개의 멤버변수를 이용할 수 있고 접근은 now.hour 이런식으로 하는데
클래스는 접근성이 디폴트가 Private라서 직접 접근 못하고 멤버함수를 통해서 접근해야 하므로
멤버함수를 정의할 때 알맞게 정의해 주어야 하겠지요

멤버함수는 멤버에만 사용되는 함수라고 보면 됩니다
하긴 나도 책을 읽은지 꽤 오랜 시간이 지나서...그냥 생각나는데로 적엇습니다

덧붙이자면
우리가 키보드에서 A 키를 치면 화면에 A 가 그려지는데
이걸 따지자면 A를 누르면 전기스위치가 붙어 전기가 통하게 되고 이것이 B라인이 아닌
A라인이므로 컴퓨터 CPU에서 인식하여 화면에 전자를 보내 어떻게 어떻게 하여 최종 A가 찍히겠지요
우리는 그 전자의 흐름을 몰라도 그냥 A를 누르면 화면에 A가 나타난다는 것만 알면 되지요


로그인하셔야 댓글을 달 수 있습니다.