검색결과 리스트
글
▶생성자(Constructor)
클래스를 선언하게 되면 그 클래스는 메모리에 객체로써 자리를 잡게 된다.
그러나, 이 객체는 해당 메모리에 자리만 잡고 있을 뿐이지, 초기화는 되지 않으므로,
생성자를를 통해서 초기화를 해줄 필요가 있다.
기본적으로 객체를 선언하였다면, 객체를 이루는 변수들에 값을 대입함으로써 객체를 초기화 할 수 있지만,
객체가 생성될때 마다 값을 대입하는 행동은 귀찮고 비효율적이다.
이런 비효율 적인 활동을 간단하게 해결 할 수 있게 하는 것이 바로 생성자이다.
생성자는 스스로 자기 자신의 객체를 초기화 하는 방법을 정의하는 것으로써,
생성자의 이름은 항상 클래스명과 동일해야 한다.
또한 오버로딩을 통해서 인자값을 받을 수 있음
리턴값을 가질 수 없다는 것이 특징이다.
▶생성자 호출 방법
생성자명 객체명 = 생성자명(인자값);
ex)
People peo(나이, "이름",키) ;
people peo = 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;
}
};
▶생성자 오버로딩
오버로딩과 오버라이딩 개념은 항상 헷갈리지만, 이 두 개념에 정리는 다음으로 미룬다.
일단 생성자에선 생성자 오버로딩이 가능하며, 이것을 통해서 인자값을 전달 할 수 잇다.
함수를 재정의하는 것을 오버라이딩(Overriding)이라하며, 이것은 기존의 함수가 행해왔던 활동을 다른 활동으로 변경하는 것을 의미한다.
오버로딩(Overloading)은 기존의 함수에 인자값이 다른 함수를 중복 정의 하는 것
▶소스코드
#include <iostream>
using namespace std;
class People{
private:
int age;
char* name;
double height;
public:
void set_People(int _age , char* _name , double _height);
void show_People();
//default 생성자
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;
}
};
void People::set_People(int _age, char* _name , double _height){
age = _age;
name = _name;
height = _height;
}
void People::show_People(){
cout << "나이 : " << age << endl;
cout << "이름 : " << name << endl;
cout << "키 : " << height << " 이었으면 좋겠다. ㅎ "<<endl << endl;
}
int main(){
// 기본 생성자 사용
People p = People();
p.show_People();
// 오버로딩 된 생성자 사용
People p2(31,"lina",168);
p2.show_People();
//p 객체의 값을 변경
p.set_People(18,"child",178);
p.show_People();
return 0;
}
'…™업무일지。 > …™C++。' 카테고리의 다른 글
가상 함수와 추상 클래스 (0) | 2014.10.20 |
---|---|
가상시리얼포트 (0) | 2014.10.17 |
상속(Inheritance)의 이해 (0) | 2014.10.15 |
※const static 멤버 (0) | 2014.10.15 |
※인라인(inline) 함수 -작업중- (0) | 2014.10.15 |
RECENT COMMENT