조회 수 1956 추천 수 3 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

체계적인 C++ 강좌를 올리고자 하는 사람입니다...


그런데... 솔직히 어느 정도의 수준으로 C++ 강좌를 올려야 할지 모르겠군요. 순수 프로그래밍을 배우자기 보다는, 게임을 만들기 위한것이니... 다이렉트X 나 XNA Studio를 다뤄봐야 하는지... 고민되네요^^...


 


사실, RPG 만들기는 일반적인 RPG 게임을 손쉽게 만들 수 있다는 장점이 있지만, 진보적이고, 전문적이며, 고급의 게임을


만들기에는 무리가 있으며 많이 부족하지요. 진정으로 게임을 제대로 만들고자 한다면, 역시 프로그래밍을 익혀야 겠지요.


 


저는, 이곳에 강좌를 첨 올려보므로... 제가 아는 지식을 슬쩍 한번 시험삼아 올려보고자 합니다...


반응을 봐 가면서 방향을 결정 해 보도록 하지요. 아래쪽부터는, 편의를 위해 존대말을 사용하지 않습니다.


양해 바랍니다.


 


기본 생성자와 소멸자


 


생성자와 소멸자를 선언하지 않으면, 컴파일러가 그 일을 대신 처리한다. 기본 생성자와 소멸자는 인수를 가지지 않으며, 아무 일도 하지 않는다.


 


아무것도 하지 않는 생성자가 무엇이 좋은가? 부분적으로는 양식의 문제이다. 모든 개체는 만들어지고, 파괴되어야 하고, 이런 아무것도 하지 않는 함수가 제때에 호출되어야 한다. 하지만 다음과 같은 매개 변수를 전달하지 않고 개체를 선언하려면,


 


    Cat Rags; // Rags는 매개 변수가 없다


 


다음과 같이 생성자를 만들어야 한다.


 


    Cat();


 


클래스의 개체를 선언할 경우 생성자가 호출된다. Cat 생성자가 두 개의 매개 변수를 가지면, 다음과 같이 작성하여 Cat 개체를 정의해야 한다.


 


    Cat Frisky(5, 7);


 


생성자가 하나의 매개 변수를 가지면 다음과 같이 작성한다.


 


    Cat Frisky(3);


 


생성자가 전혀 매개 변수를 가지지 않는 경우, 괄호를 빼고 적어야 한다.


 


    Cat Frisky;


 


이것은 모든 함수가 매개 변수를 가지지 않을 경우에라도 괄호를 가져야만 한다는 규칙에 대한 예외이다.


이런 이유 때문에 다음과 같이 적을 수 있다.


   


    Cat Frisky;


 


이것은 기본 생성자를 호출한다. 매개 변수가 없으므로 괄호를 생략한 것이다. 반드시 컴파일러가 제공하는 기본 생성자를 사용할 필요는 없다. 항상 자유롭게 매개 변수가 없는 자신의 생성자를 만들 수 있다. 매개 변수를 가지지 않는 생성자라 해도 개체를 초기화하거나 다른일을 하는 함수 본체를 가질 수 있다.


 


양식과 관련된 문제인데, 생성자를 선언할 경우, 소멸자가 아무일도 하지 않더라도 소멸자를 선언 했는지 확인하도록 한다.


기본 소멸자가 제대로 잘 동작하겠지만, 자신의 것을 선언하는 것이 그리 힘들지는 않을 것이다.


 


그렇게 하면 고드가 좀더 깔끔해 보인다.


 


다음은 생성자와 소멸자를 사용한 예이다.


 


 


*** 예제


#include <iostream.h>


 


Class Cat


{


  public:


    Cat(int initialAge);


    ~Cat();


    int GetAge();


    void SetAge(int age);


    void Meow();


  private:


    int itsAge();


};


 


Cat::Cat(int initialAge)


{


  itsAge = initialAge;


}


 


 


Cat::~Cat()


{


}


 


int Cat::GetAge()


{


  return itsAge;


}


 


void Cat::SetAge(int age)


{


  itsAge = age;


}


 


void Cat::Meow()


{


  cout << "Meow.n";


}


 


int main()


{


  Cat Frisky(5);


  Frisky.Meow();


  cout << "Frisky is a cat who is ";


  cout << Frisky.GetAge() << " years oldn";


  Frisky.Meow();


  Frisky.SetAge(7);


  cout << "Now Frisky is ";


  cout << Frisky.GetAge() << " years oldn";


  return 0;


}


 


 


*** 결과:


Meow.


Frisky is a cat who is 5 years old.


Meow.


Now Frisky is 7 years old.


 


흠... 일단 클래스의 생성자와 소멸자에 관한 내용을 올려봅니다...


데이터 멤버나 메소드에 관한 설명도 없이 이 내용만 달랑 올리기는 그렇지만...


시험삼아 올려 봅니다.


 


읽으신 분은 댓글을 부탁드립니다.

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
661 언어/기타 [C++] 한글과 영어가 섞인 문자열의 길이 체크 Zeprod 2007.06.01 2152
660 언어/기타 액션알피지 만들기 1 귀여븐닌자 2006.03.22 2092
659 언어/기타 인벤토리 시스템 [내용 또 수정] 1 file 비밀소년 2006.07.30 2060
658 언어/기타 미소녀 제작기에 대해. Light 사의 Lum 툴....? 협객 2007.05.16 2026
657 언어/기타 케릭터이름쉽게짓는방법 cksduwehtl 2006.03.24 2009
656 언어/기타 목에 좋은것들.... 1 켄타 2005.05.17 2008
655 언어/기타 악당들의 유형들..? 크레시스 2005.12.27 2006
654 언어/기타 게임 동영상 만들기 사토루 2006.03.06 2004
» 언어/기타 [C++] 클래스(객체지향) - 기본 생성자와 소멸자 Sirjhswin 2007.06.13 1956
652 언어/기타 Love One 7차 체험판 자유의지 2006.10.10 1952
651 언어/기타 (2003) 연속공격 버프 스킬로 '공격' 커맨드의 활용도를 늘려보자. 땡중 2007.11.17 1927
650 언어/기타 [DX/VB] DirectDraw? 별거 아냐! (2) 블리팅, 그리고 투명도 악희 2007.07.31 1912
649 언어/기타 "빵과 유통기한" EverSmileMan 2006.10.21 1890
648 언어/기타 보스는 왜 맨날 쫄자들만 보내는가!? 다크아머 2006.01.24 1889
647 언어/기타 1. 게임 시나리오의 기초 1 샤르엘 2007.11.27 1889
646 언어/기타 액알, 한번의 노가다로 끝까지 사용하자! file RPG_매냐 2007.02.23 1888
645 언어/기타 VNAP 1.78 file 자유의지 2006.07.20 1879
644 언어/기타 엔진 제작중...... 랜스 2008.05.19 1846
643 언어/기타 스킬데미지를 10000이상 뜨게해보자.(턴알,액알 둘다) Dship 2005.05.18 1843
642 언어/기타 [ODS] 그림을 움직여보겠습니다(Animate) Zeprod 2008.06.07 1841
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 36 Next
/ 36






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)