안녕하세요? 레조입니다.
먼저 답변해주신 분들에게 감사드리며..
(저 혼자가 아니라 많은 분들이 도와주셔서 고맙습니다. T__T)
그냥 생각이나서 약간 다른 내용이지만 적어보겠습니다.
Class 내부에서 메소드를 정의할때 루프문등의 부하(?)가 큰 코드는
밖으로 빼주시는게 좋은 습관입니다.
(클래스 내부에 정의한 코드는 인라인 함수처럼 코드상에 매크로 복사
되듯이 됩니다. 즉, 루프 50까지 돌면 그 내부의 코드가 50번 반복
해서 컴파일 코드가 만들어집니다. 괜히 50라인이 증가되는 것이죠.. --;)
물론 요즘의 뛰어난 컴파일러는 이러한 부분을 단순히 경고만 해주고
잘작동하게 되지만 --;(별것 아니라고 항의하신다면... -.-;;)
다시말하면.. 컴파일러가 스스로 판단해서 이 코드는 좀 이상타.. 하고는
알아서 고침니다.. --;(프로그래머는 왜있는것인지.. -.-;;)
어쨋든 클래스 내부는 기본적으로 인라인 함수처럼, 컴파일 후에는 코드내에
붙여지게 됩니다.
또 하나더 짚고 넘어가자면.. 사용하신 코드에서 생성자를 사용할듯
말듯 하셨는데 그 부분에서 오류가 난것 같습니다.
생성자를 사용하시는 부분을 좀더 공부하시면 클래스 작성에서 더 유연해
지게될것입니다.
아래의 코드를 조금 변경했습니다.
(위에서 언급한 클래스 밖에서 정의한 내용입니다.)
//----------------------------------------------------------------------------
#include <conio.h>
#include <iostream.h>
//----------------------------------------------------------------------------
class base {
public:
int OddSum();
};
int base::OddSum()
{
int isum = 0;
for(int n = 1; n <=50; n++)
{
isum = isum + (2*n - 1);
}
return isum;
}
//----------------------------------------------------------------------------
class derived : public base {
public:
int EvenSum();
};
int derived::EvenSum()
{
int isum = 0;
for(int n = 1; n <= 50; n++)
{
isum = isum + ( 2 * n );
}
return isum;
}
//----------------------------------------------------------------------------
main()
{
derived o;
cout << o.OddSum() << endl;
cout << o.EvenSum() << endl;
getch();
return 0;
}
//----------------------------------------------------------------------------
ps.
주변 사람들에게 bcbdn 많이 홍보해주세여~~ ^^;
신윤정 님이 쓰신 글 :
: #include <iostream.h>
:
: class base {
: public:
: int oddsum()
: {
: base(int isum = 0;
: for(int n = 1; n <=50; n++)
: {
: isum = isum + (2*n - 1);
: }
: return isum;
: }
: };
:
: class derived : public base {
: public:
: derived(int n) : base(n)
: int oddsum2()
: {
: base(int isum = 0;
: for(int n = 1; n <=50; n++)
: {
: isum = isum + (2*n);
: }
: return isum;
: }
: };
:
: main()
: {
: derived o;
:
: o.oddsum();
:
: return 0;
: }
:
:
: 이렇게 1-100까지의 홀수의 합과 1-100까지의 짝수의 합을 구하는 프로그램을 작성해 봤는데영..
: 에러가 3개 나네용..
: 근데...에러 고치기 힘들어서여..
: 그리고...레조님과..태즈님...이렇게 신경써주셔서 정말정말~~고마워용~~^^..~
: 제가 짠것좀 한번 봐주시고...고쳐주시면...감사 하겠습니다..
: ~
|