카테고리 없음

<C++ Program> 클래스 개념

LEEHANDS 2020. 12. 10. 15:49
반응형

1. 클래스 (Class)

핵심 개념은 구조체의 확장판

C에서 구조체는 타입이 다른 변수의 집합이라고 보았다면, C++ 에서 클래스는 타입이 다른 변수의 집합뿐만 아니라 함수까지 포함

(사실 요즘 C 언어에서도 클래스처럼 사용할 수 있음)

// People 클래스 선엄
class People{
	private:
    	int age;
        char* name;
        double height;
	public:
    	//함수도 포함 가능
        void set_People(int _age, char* _name, double _height);
        void show_People();
};

 

2. 생성자 (Constructor)

클래스를 선언하게 되면 그 클래스는 메모리에 객체로써 자리잡게 된다.

그러나 객체는 해당 메모리 자리에만 잡고 있을 뿐이지 초기화는 되지 않으므로, 생성자를 통해 초기화해줄 필요가 있다.

기본적으로 객체를 선언하였다면, 객체를 이루는변수들에 값을 대입함으로써 객체를 초기화할 수 있지만 객체가 생성될때마다 값을 대입하는 행동은 귀찮고 비효율적이다.

이런 비효율적인 활동을 간단하게 해결하는 법이 바로 생성자.

생성자는 스스로 자기 자신의 객체를 초기화하는 방법을 정의하는 것으로

생성자의 이름은 항상 클래스 명과 동일해야 한다.

또, 오버로드를 통해 인자값을 받을 수 있으나 리턴값을 가질 수 없는 것이 특징

 

생성자를 호출하는 방법

// 생성자명 객체명 (인자값)
//생성자명 객체명 = 생성자명(인자값)

ex)
People peo(나이, "이름", 키);
People peo = People(나이,"이름",키);
class People{
private:
	int age;
	char* name;
	double height;
public:
	void set_People(int _age , char* _name , double _height);
	void show_People();
	
    // 기본 생성자 
	People(){
    	char* t = "naddru";
		cout << "=== 생성자 호출 : 인자값 없음 ===" << endl;
		age = 30;
		name = "naddru";
		height = 182;
	}
	// 생성자 오버로딩 (인자값을 지정해줄 수 있다)
	People(int _age , char* _name , double _height){
		cout << "=== 생성자 호출 : 인자값 3개 ===" << endl;
		age = _age;
		name = _name;
		height = _height;
	}
};

 

반응형