[모던C++입문] 2.2 멤버
- 📕 Book/모던C++입문
- 2021. 7. 5.
2. 클래스
2.2 멤버
멤버 변수
class complex
{
public:
double r, i;
}
complex z, c;
z.r = 3.5; z.i = 2;
c.r = 2; c.i = -3.5;
//멤버 변수는 도트 연산자 . 를 사용하여 접근 할 수 있다
std::cout << " z is (" << z.r << ", " << z.i << ")" << enld;
접근성
- c++에서는 다음 3가지 접근 지정자(Access Modifier)를 제공한다
- public: 어디에서나 접근 가능
- protected: 클래스 내부와 파생 클래스에서 접근 가능
- private: 클래스 내부에서만 접근 가능
class A
{
//접근 지정자를 지정하지 않으면 기본 private 으로 된다
int x;
int y;
public:
int i, j; //public
//friend 선언은 클래스의 모든 접근 지정자에서 가능하다
//A_2클래스에서 A클래스의 private와 protected 멤버에 접근할 수 있다.
friend class A_2;
}
struct B
{
//struct는 기본 public으로 된다
int x;
int y;
}
접근 연산자
complex c;
complex* p = &c;
*p.r = 3.5; //오류 : *(p.r)을 의미
(*p).r = 3.5; //정상
(*(*p).pm).m2 = 11; //아름답지 않다
p->pm->m2 = 11; //위와 동일 하지만 한결 편안
클래스에 대한 static 선언
- static으로 선언된 멤버 변수는 클래스마다 하나만 존재
- static을 사용하여 개체간의 리소스를 공유 가능
- 다른 방식으로는 싱글턴(singleton)이라는 디자인 패턴이 있다
- static 함수는 static 데이터에만 접근 가능하며 static 함수만 호출할 수 있다
멤버 함수
- 클래스의 함수는 멤버함수(Member Function) 또는 메서드(Method)라 한다
- 일반적인 멤버 함수는 게터(getter)와 세터(setter)이다.
class complex
{
public:
double get_r() { return r; }
void set_r(double newr) { r = newr; }
double get_i() { return i; }
void set_i(double newi) { i = newi; }
private:
double r, i;
}
int main()
{
complex c1, c2;
//c1을 설정
c1.set_r(3.0);
c1.set_i(2.0);
//c1을 c2에 복사
c2.set_r(c1.get_r());
c2.set_i(c1.get_i());
//위 방식 보다 앞으로 배울 생성자를 통해 개체의 값을 설정하자
return 0;
}
반응형