2012. 5. 3. 17:14
Study/C++
* 과제
1. 공통점 : 데이터를 저장할수 있다.
2. 차이점 : 변수에는 기능이 없다.
3. 객체는 동적, 변수는 정적
4. 객체명, 변수명 모두 해당 메모리에 접근하는 권한이다.
* 객체의 생성 과정
1. 메모리 할당
2. 생성자 호출 - 1. 과 동시에 이루어짐
---------
3. 생성자 실행
-> 이 구조는 추 후 상속과 관련해서 중요함
* 클래스의 특징
1. 독립적이어야 한다. -> 유기적인 관계가 없도록 해야한다.
1. 재활용이 가능해야한다.
* 포인터와 레퍼런스의 차이
포인터는 지정하는 대상을 변경이 가능하고 아무것도 가르키지 않을 수 있지만 레퍼런스는 이 두가지 모두 불가능하다.
* 멤버 함수가 const로 선언될경우
멤버 함수내에서 멤버 변수의 변경이 불가능하도록 방지하는 것.
* 생성자와 소멸자
둘 모두 무조건 자동으로 호출이 되는 함수. 각각 메모리 할당/메모리 반환 시에 호출 됨
따로 사용자가 명시하지 않을 경우 컴파일러가 디폴트 생성자/소멸자를 삽입한다.
* 객체의 생성 과정
- 메모리 할당
- 생성자 호출
1. 생성자의 필요성
1) 객체를 생성과 동시에 초기화 하기 위해서
2) 객체는 생성과 동시에 초기화되는 것이 좋은 구조
2. 생성자란?
1) 객체 생성 시 반드시 한번 호출되는 함수
2) 클래스와 같은 이름의 함수
3) 리턴형이 없으며 리턴 하지도 않는다.
4) 함수이므로 인자를 받을 수 있다. -> 선언 시에 매개변수를 동시에 입력해야한다.
5) 생성자를 통한 인자의 전달
- 이전의 객체 생성 방법은 구조체 변수의 선언과 동일한 방법
- 클래스명 객체명(인자,인자,....) 형태로 인자 전달
6) public생성자, private생성자
- public생성자 : 어디서든 객체 생성 가능
- private생성자 : 클래스 내부에서만 가능
7) 객체 생성의 두 가지 형태
Person p = Person("KIM", "123-4563", 22); // 이름 없는 임시 객체 Person을 생성하여 p에 객체간 복사를 행하여 초기화.
Person p("KIM", "123-4563", 22); // 생성하면서 생성자를 통해 바로 객체를 초기화
8) 오해하기 쉬운 객체 생성
Person p("KIM", "123-4563", 22); // 정상적인 객체 생성
Person p(); // 함수 선언!
9) 특징
- 생성자도 함수다!
- 함수 오버로딩이 가능하다.
- 디폴트 매개 변수 설정도 가능
'Study > C++' 카테고리의 다른 글
[OOP1] 120510 소멸자, this, 복사 생성자, 깊은 복사와 얕은 복사 (0) | 2012.05.10 |
---|---|
[OOP1] 120507 Class 계속.... (0) | 2012.05.07 |
[OOP1] 클래스 (0) | 2012.04.30 |
[OOP1] 120426 Class (0) | 2012.04.26 |
[객체지향프로그래밍1] 120423 함수 (0) | 2012.04.23 |