반응형

** 생성자의 필요성

 

- 객체를 생성과 동시에 초기화 하기 위해서

- 객체는 생성과 동시에 초기화되는 것이 좋은 구조!

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
struct Person
{
 char name[10];
}
 
 
int main(void)
{
 Person p;
 cin>>p.name;
 
 if(p.name이 유효하지 않다면);
 
 return 0;
}
 
 
int main(void)
{
 char name[10];
 
 cin>>name;
 
 if(name이 유효하다면);
 {
  Person p= (name);
 }
 return 0;
}
 
Crocus

 

 

후자의 코딩법이 더 좋은 코딩이다. 잘 숙지해두기

 

 

** 생성자란?

 

- 객체 생성 시 반드시 한 번 호출되는 함수

- class와 같은 이름의 **함수**다.

- 리턴형이 없으며 리턴 하지도 않는다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Person
{
    char name[SIZE];
    char phone[SIZE];
    int age;
 
 public:
 
 Person() // 생성자
 {
   name = "KIM";
   phone = "013-113-1113";
   age = 22;
 }   
 
  // Person p("KIM","013-113-1113",22); 이렇게 한다면 생성자를 만들 수 있다.
  void ShowData();
};
 
void Person::ShowData()
{
 cout<<"name : "<<name<<endl;
 
 cout<<"phone : "<<phone<<endl;
 
 cout<<"age : "<<age<<endl;
}
 
int main()
{
 Person p; // 객체를 생성하면 위에서 자동으로 생성자에 의해 초기값이 들어간다.
 p.ShowData();
 return 0
}
 
Crocus

 

반응형