반응형
#include 

using namespace std;

class Person
{
private:
	int m_age; 
	char m_name[20]; 
	char * m_addr;

public: 
	// 생성자 : 객체 멤버의 초기화  
	// 1) 클래스의 이름과 동일하다 !! 
	// 2) 생성자는 리턴이 없다. --> void :  리턴 값이 없는경우 !!!
	// 3) 객체 생성시에 자동으로 호출을 해준다. 
	// 4) 함수 오버로딩이 가능하다 !! 
	// 5) 생성자를 작성하지 않으면 디폴트 생성자를 만들어 준다 !! 
	// 6) 오버로딩된 다른 버전의 생성자가 있으면 컴파일러가 더이상 
	// 디폴트 생성자를 만들어 주지 않는다..
	Person()
	{
		m_age = 20; 
		strcpy(m_name, "홍길동"); 
		m_addr = new char[200];
		strcpy( m_addr, "충남 논산시 와야리"); 

	}
	Person( int age) 
	{
		m_age = age; 
		strcpy(m_name, "홍길동"); 
	}
	Person( int age ,  char * name) 
	{
		m_age = age; 
		strcpy( m_name, name);
	
	}
	// 소멸자 : 
	// 객체가 소멸이 될때 자동으로 호출되는 함수 !! 
	// 1) 클래스와 이름이 동일하다 !!
	// 2) 생성자와 구별하기 위해 ~을 붙여준다 !! 
	// 3) 리턴이 없다.
	// 4) 오버로딩이 불가능 ( 1개만 존재한다) 
	// 객체의 정리 작업 !! 
	// 객체가 동적할당, 시스템의 자원 활용, 네트워크 자원등을 
	// 정리하는 작업 !! 
	~Person() 
	{
		// 객체가 메모리에서 사라질때 
		// 자동으로 수행해야할 작업들 정의 !! 
	    delete [] m_addr; 
	}



	void ShowInfo()
	{
		cout << "나이 : " << m_age <<"이름 :" << m_name << endl;
	}
	void Create(){} 
	void Die(){}
}; 
void main()
{
	Person Bow; 
	Bow.ShowInfo();

}

'C, C++' 카테고리의 다른 글

[C++] const 멤버의 이해, 활용, 사용  (0) 2014.11.18
[C++] 추상화  (0) 2014.11.18
[C++] struct , 구조체!!  (0) 2014.11.18
[C++] 함수오버로딩  (0) 2014.11.18
[C++] 문법적 개선사항  (0) 2014.11.18

+ Recent posts