목적
  - 클래스와 생성자에 대해 이해한다.

문제

사용자 삽입 이미지
 
코드

 





해설

  - 생성자는 public 형 함수로 클래스 이름으로 선언되며 인수는 괄호 안에 원하는 형식을 넣어 쓰면됩니다.
  - 위 코드에서는 생성자가 3개이며 overloading(오버로딩) 방식으로 중첩선언 되었습니다.
  - 첫번째 생성자는 생성(인스턴스화)시 인수가 하나도 없을때 이며 두번째는 순서만 있을때 세번쨰는 길이와 순서가 있을때 입니다. 이 코드에서는 세번째 생성자만 쓰여졌습니다.
  - length() 맴버 함수는 private 형으로 선언되어 있는 길이값들을 계산하여 빗변의 길이를 출력하는 함수 입니다. public 형으로 되어 있기 때문에 main() 함수 내에 맴버를 바로 호출할수 있습니다.

참고
  - http://winapi.co.kr/clec/cpp3/26-1-1.htm : 생성자
  - 유사 문제

Posted by 카켈



목적
  - 강제 형변환에 대해 정확한 이해를 가진다.
  - 오버로딩 함수를 작성한다.

문제
사용자 삽입 이미지

풀이

#include <iostream>

using namespace std;

 void add(double aA, double aB)
 {
  cout << "add(double, double) 함수가 호출되었습니다." << endl;
  cout << aA << " + " << aB << " = " << aA + aA << endl;
 
  return;
 }

 void add(int aA, int aB)
 {
  cout << "add(int, int) 함수가 호출되었습니다." << endl;
  cout << aA << " + " << aB << " = " << aA + aB << endl;
 
  return;
 }

int main(void)
{
 double dA, dB;
 dA = dB = 0;

 cout << "두 실수를 입력하세요 : ";
 cin >> dA >> dB;
 cout << endl;

 if((int)dA == dA && (int)dB == dB) add((int)dA, (int)dB);
 else add(dA, dB);

 

 return 0;
}

해설
  - 오버로딩 함수는 형식(프로토타입)에 따라 같은 함수명이라도 서로 다른 인수와 다른 출력을 가질수 있게 만들어진 함수 형식입니다. 여러 제약을 완화 하는데 많은 도움을 줍니다.

  - double(배정도 소숫점) 형식에서 int(정수형) 형식으로 강제 형변환(캐스팅)을 하면 소숫점이 떨어져 나가기 때문에 형변환 하기 전과 후의 값 상태를 봐서 함수의 인수를 int 형으로 할 것인지 아니면 double 형으로 할것인지 정하면 됩니다.

참고
  - http://www.winapi.co.kr/clec/cpp1/5-3-4.htm : 캐스트(cast, 형변환) 연산자
  - http://tea815.com.ne.kr/cpp/604.htm : 오버로딩(overloading)

Posted by 카켈
이전페이지 1 다음페이지