티스토리 뷰
4. 기본 생성자 삽입 예제
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
36
37
38
39
40
41 |
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
class Circle {
public:
int radius;
double getArea();
Circle();
Circle(int r);
};
Circle::Circle() {
radius = 10;
cout << "반지름이 " << radius << " 원 생성" << endl;
}
Circle::Circle(int r) {
radius = r;
cout << "반지름이 " << radius << "원 생성" << endl;
}
double Circle:: getArea() {
return 3.14 * radius * radius;
}
int main() {
//pizza 객체
Circle pizza(30);//매개 변수가 한개 있는 생성자를 호출
double area = pizza.getArea();
cout << "pizza의 면적은 " << area << endl;
//donut 객체
//기본 생성자가 호출 : 컴파일러가 자동으로 코드 삽입.
//컴파일러가 자동으로 삽입해주지 않는 경우 : 하나라도 생성자가 선언되어 있는 클래스의 경우.
Circle donut;
donut.radius = 1;
area = donut.getArea();
cout << "donut의 면적은 " << area << endl;
return 0;
} |
cs |
5. 생성자 함수 특징
- 객체가 생성될 때, 객체가 필요한 초기화를 위함
- 생성자 이름은 클래스 이름과 동일하다.
- 생성자는 리턴 타입을 선언하지 않는다.
- 객체 생성 시 오직 한 번만 호출한다.
- 생성자는 중복 선언이 가능하다.
- 생성자가 선언 되어 있지 않으면 기본 생성자가 자동으로 만들어진다.
*사각형 예제
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
36
37
38
39
40
41
42
43
44
45
46 |
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
class Rectangle {
public:
int width, height;
bool isSquare();
Rectangle();//생성자 선언
Rectangle(int width, int height);
Rectangle(int length);
};
bool Rectangle:: isSquare() {
if (width == height)
return true;
else
return false;
}
//기본 생성자 구현. rect가 자동으로 호출하는 생성자
Rectangle::Rectangle() {
width = height = 1;
}
//매개변수가 2개인 생성자 구현. rect2가 자동으로 호출하는 생성자
Rectangle:: Rectangle(int w, int h) {
width = w;
height = h;
}
//매개변수가 1개인 생성자 구현. rect3가 자동으로 호출하는 생성자
Rectangle::Rectangle(int length) {
width = length;
height = length;
}
int main() {
Rectangle rect1;//기본 생성자 호출
Rectangle rect2(3,5); //매개변수가 2개인 생성자를 호출
Rectangle rect3(3);//매개변수가 1개인 생성자를 호출
if (rect1.isSquare()) cout << "rec1은 정사각형이다." << endl;
if (rect2.isSquare()) cout << "rec2은 정사각형이다." << endl;
if (rect3.isSquare()) cout << "rec3은 정사각형이다." << endl;
return 0;
} |
cs |
3.5 소멸자
- 객체가 사라질 떄 필요한 마무리 작업을 위함이다.
- 소멸자의 이름은 클래스 이름 앞에 '~'를 붙인다.
- 리턴 타입이 없다.
- 소멸자는 오직 한개만 존재한다.
- 매개변수를 가지지 않는다.
- 소멸저가 선언되어 있지 않으면 자동으로 생성된다.
*사용 형식
class Circle{
Circle();
Circle(int r);
........
~Circle();
}
Circle:: ~Circle(){
......
}
*소멸자 함수 예제(위 사각형 예제)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 |
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
class Rectangle {
public:
int width, height;
bool isSquare();
Rectangle();
Rectangle(int width, int height);
Rectangle(int length);
~Rectangle();//소멸자 함수
};
bool Rectangle:: isSquare() {
if (width == height)
return true;
else
return false;
}
Rectangle::~Rectangle() {//소멸자 함수 구현
cout << "width = " << width << "height= " << height << "인 객체소멸" <<endl;
system("pause");
}
//기본 생성자 구현. rect가 자동으로 호출하는 생성자
Rectangle::Rectangle() {
width = height = 1;
cout << "rect1 객체 생성" << endl << endl;
}
//매개변수가 2개인 생성자 구현. rect2가 자동으로 호출하는 생성자
Rectangle:: Rectangle(int w, int h) {
width = w;
height = h;
cout << "rect2 객체 생성" << endl << endl;
}
//매개변수가 1개인 생성자 구현. rect3가 자동으로 호출하는 생성자
Rectangle::Rectangle(int length) {
width = length;
height = length;
cout << "rect3 객체 생성" << endl << endl;
}
int main() {
Rectangle rect1;//기본 생성자 호출
Rectangle rect2(3,5); //매개변수가 2개인 생성자를 호출
Rectangle rect3(3);//매개변수가 1개인 생성자를 호출
return 0;
} |
cs |
'객체 지향 프로그래밍 > 이론 정리' 카테고리의 다른 글
[C++]객체 포인터, 객체 배열,동적 메모리 할당 (0) | 2017.10.11 |
---|---|
[C++]접근지정자, 인라인 함수, 구조체, 파일분리 (0) | 2017.09.27 |
[C++]클래스와 객체, 생성자 (1) | 2017.09.20 |
[C++] C++ 문자열 처리 (0) | 2017.09.13 |
2. C++ 프로그래밍의 기본 (0) | 2017.09.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파이썬 문자열
- 자바스크립트 자료구조
- 버츄어박스
- 파이썬 단계적 개선
- 백준 1874
- 웹
- 파이썬 클래스
- 명품 c++ 실습
- 자바스크립트 그래프
- 자료구조
- 파이썬 진수 변환
- 백준 10451
- 백준 11501
- 파이썬 for
- 파이썬 함수
- 파이썬 예제
- css 그리드
- 파이썬 리스트
- 파이썬 객체
- 자바 에센셜 실습문제
- 파이썬 연산자
- 파이썬 if문
- 파이썬
- 파이썬 터틀
- 백준
- 파이썬 while
- css
- 파이썬 선택문
- 자바
- css 박스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함