본문 바로가기

클래스

C++ 클래스의 임시 객체 임시 객체 기본적으로 C문법에서 int a = 3 + 5; 라는 코드를 입력하고 컴파일 하게 되면 a가 메모리에 올라가서 4바이트를 잡고 (32비트 운영체제 일때) 있다고 생각 하겠지만 실은 3과 5도 메모리에 올라가있다. 그래야 CPU가 처리를 하기 때문... 그럼 총 12바이트가 올라가게 되는데 a같은 경우는 함수가 끈날때 까지는 계속적으로 메모리에 로드되어 있지만 3 과 5는 저 라인이 끈나는 즉시 소멸 된다. 임시 객체는 이와 같다. 클래스 이름에 괄호를 치로 바로 멤버변수 값을 기제 하게 되는데 아래와 같다. #include #include class A { char name[20]; public: A(char* _name) { strcpy(name, _name); cout 더보기
순수 가상 함수와 추상 클래스 순수 가상 함수 와 추상클래스 순수 가상 함수란? 함수 오버라이딩을 한후 Base class 의 은닉된 함수를 완전히 가리기 위하여 virtual 키워드로 함수부를 완전히 가리게 된다. 하지만 함수의 바디(body) 부분을 여전히 기제를 해야하는데 이는 실로 엄청나게 번거로운 방법이고 코드도 늘어가게 된다. 실행도 되지 않는 함수때문에 함수의 몸체 부분을 (return 문장만 쓰더라도 블럭을 잡아야 하니까 ) 모두 기제해줘야 하기 때문이다. 그래서 virtual void a() = 0; 와 같은 형식으로 해더 부분을 변경하여 코드를 작성하면 컴파일은 이 함수가 가상 함수라는걸 알고 제어를 오버라이딩 된곳으로 바로 옴기게 된다. 이때 이 함수를 순수 가상 함수라고 한다. 왜냐하면 함수의 몸체가 없기때문에 .. 더보기