조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
824 언어/기타 [ 서버이전 끝남 ] 초코군 2006.08.15 954
823 언어/기타 [Android] 멀티스크린 노하우 2 MiDtics2 2012.10.27 1464
822 언어/기타 [C++] template의 활용법 Zeprod 2007.01.21 1004
821 언어/기타 [C++] WinAPI를 이용한 GUI 프로그래밍 Zeprod 2007.01.08 1204
820 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -1- Zeprod 2006.12.12 1191
819 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -2- Zeprod 2006.12.28 901
818 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -3- Zeprod 2007.01.02 949
817 언어/기타 [c++] 생성자,파괴자 챔피온 2005.05.26 1629
816 언어/기타 [C++] 최단거리 구하는 알고리즘, E log V Dijkstra 악희 2007.08.05 2314
» 언어/기타 [C++] 클래스(객체지향) - 기본 생성자와 소멸자 Sirjhswin 2007.06.13 1956
814 언어/기타 [C++] 한글과 영어가 섞인 문자열의 길이 체크 Zeprod 2007.06.01 2147
813 언어/기타 [css, js] form - select안의 option들에 스타일 적용하기 4 file 2012.04.28 5204
812 언어/기타 [css] css 겉핥기 핥핥 1 file 2012.05.03 855
811 언어/기타 [C] C는 어떤 언어이고 뭘 할 수 있는 언어일까? SeHwa 2007.01.26 1298
810 언어/기타 [C강좌] C를 시작하는 사람들이 알아야할 두가지 Lance 2005.08.22 304
809 언어/기타 [DX&C++] 3D 공간에 대한 이해 Zeprod 2007.03.04 1247
808 언어/기타 [DX&C++] 3D를 넘어 2D로! Zeprod 2007.04.18 1675
807 언어/기타 [DX&C++] 3D를 다루는 프로그램의 개요 Zeprod 2007.03.25 1247
806 언어/기타 [DX&C++] 3대 행렬 연산의 비대칭성(unsymmetry) Zeprod 2007.04.27 1192
805 언어/기타 [DX&C++] 3대 행렬 연산의 사용 Zeprod 2007.03.30 1407
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 51 Next
/ 51






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

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