조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
884 언어/기타 게임의 리얼리티화 유진 2007.08.16 2461
883 언어/기타 바실리어트 3. 메인화면 제작 Vermond 2007.08.14 5958
882 언어/기타 바실리어트 4. 소스 준비 Vermond 2007.08.14 4622
881 언어/기타 [C++] 최단거리 구하는 알고리즘, E log V Dijkstra 악희 2007.08.05 2314
880 언어/기타 [DX/VB] DirectDraw? 별거 아냐! (3) 더블 버퍼의 생성과 블리팅 악희 2007.08.03 1839
879 언어/기타 0707후반기[제작자포럼]공성결과 천무 2007.08.01 1372
878 언어/기타 [DX/VB] DirectDraw? 별거 아냐! (2) 블리팅, 그리고 투명도 악희 2007.07.31 1912
877 RPG Maker 초보자를 위한 그래픽 소스 게임에 넣을 때의 팁. 1 file 한글화마스터 2007.07.30 2384
876 언어/기타 7월상반기(제작자포럼)공성결과 천무 2007.07.30 1094
875 언어/기타 [DX/VB] DirectDraw? 별거 아냐! (1) DirectDraw객체의 생성과 표면의 생성 악희 2007.07.29 1756
874 언어/기타 두드리는 미니게임... JIN[晉] 2007.07.25 1439
873 RPG Maker [스크립트 문제]RPGXP에서 타일셋의 우선순위 문제 해결 file Novelist 2007.07.19 1739
872 RPG Maker RPGXP 초보강좌 [스위치] 우리의만두 2007.07.16 921
871 언어/기타 바실리어트 2. 스크립트 입문 1 Vermond 2007.07.05 4976
870 언어/기타 바실리어트 1. 시작하기 전에 Vermond 2007.07.03 6071
869 언어/기타 [THDO]판화 세계지도제작 스크립트. file 협객 2007.06.25 2704
868 언어/기타 바실리어트 - 비주얼노벨형 게임 제작용 엔진 플루비아♥ 2007.06.25 2637
867 언어/기타 삭제 게이지의달인 2007.06.14 534
» 언어/기타 [C++] 클래스(객체지향) - 기본 생성자와 소멸자 Sirjhswin 2007.06.13 1956
865 RPG Maker RPGXP의 기본전투 속도를 더욱 빠르게~ 2 Novelist 2007.06.10 1978
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 51 Next
/ 51






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

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