티스토리 뷰

3.1 객체에 대한 이해

 

* 클래스

- 객체를 만들어내기 위해 정의된 설계도, 틀

- 멤버 변수와 멤버 함수 선언

 

* 객체

- 객체는 생성될 때 클래스의 모양을 그대로 가지고 탄생

- 멤버 변수멤버 함수로 구성

- 메모리에 생성, 인스턴스(instance)라고 부르기도 함.

- 하나의 클래스 틀에서 찍어낸 여러 개의 객체 생성 가능

- 객체들의 상호 별도의 공간에 생성

 

3.2 클래스 만들기

- class 키워드 이용.

- 일반적으로 클래스 선언부와 클래스 구현부로 나누어 작성된다.

- 클래스 선언부에는 class 키워드로 클래스의 모양을 선언.

- 클래스 구현부는 클래스의 멤버 함수들을 구현한다.

 

* 선언부 형식

class Circle {
public: // 멤버에 대한 접근 지정자

int radius;//멤버 변수
double getArea();//멤버 함수

};

 

*구현부 형식

double Circle :: getArea(){

return 3.14 * radius * radius;

}

 

- 클래스 구현부에서 범위지정연산자(::)를 이용해 멤버함수의 소속을 알려주어야 한다.

ex) double 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
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
//1. 선언부
class Circle {
public://멤버에 대한 접근지정자.
    int radius;//멤버 변수 , radius = 5 처럼 초기값 설정 불가
    double getArea();//멤버 함수
};//세미콜론으로 끝난다!
 
 
//2.구현부
double Circle :: getArea(){//getArea() 클래스 소속 ::(범위지정연산자)
    return 3.14 * radius * radius;
}
 
int main() {
    //donut 객체 생성 : 클래스이름 객체이름
    Circle donut;
    donut.radius = 10;// 반지름이 10인 donut 객체 생성
    double area = donut.getArea(); // donut의 면적 구하기.
    cout << "donut의 면적은 " << donut.getArea() <<endl;
 
    //반지름이 30인 피자 객체 생성
    Circle pizza;
    pizza.radius = 30;
    double area2 = pizza.getArea();
    cout << "pizza의 면적은 "<< pizza.getArea() << endl;
 
 
    return 0;
}
cs

 

3.4 생성자(Constructor)

- 생성자는 객체를 생성 할 때 객체를 초기화 할 수 있다.

- 객체가 생성될 때 자동으로 기본 생성자가 호출된다.

- 매개 변수가 없는 생성자가 기본 생성자이다.

 

* 생성자 예제

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
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
//1. 선언부
class Circle {
public://멤버에 대한 접근지정자.
    int radius;//멤버 변수
    double getArea();//멤버 함수
    Circle();// 기본생성자 선언
};//세미콜론으로 끝난다!
 
//2.구현부
 
Circle::Circle() {//기본생성자 구현.
    radius = 5;
    cout << "반지름 " << radius <<"d인 생성" << endl;
}
 
double Circle :: getArea(){//getArea() 클래스 소속 ::(범위지정연산자)
    return 3.14 * radius * radius;
}
 
int main() {
    Circle donut;//객체가 생성되면 자동으로 기본생성자를 호출한다. radius = 5
    donut.radius = 10;//radius = 5 였던 donut 객체의 radius를 10으로 바꾼다.
    double area = donut.getArea(); // donut의 면적 구하기.
    cout << "donut의 면적은 " << donut.getArea() <<endl;
 
 
 
    return 0;
}
cs

 

댓글