c++ this포인터와 연쇄 호출
728x90
#include <iostream>
#include <string>
using namespace std;
class Calc
{
private:
int m_value;
public:
Calc(int init_value)
:m_value(init_value)
{}
Calc& add(int value)
{
m_value += value;
return *this;
}
Calc& sub(int value)
{
m_value -= value;
return *this;
}
Calc& mult(int value)
{
m_value *= value;
return *this;
}
void print()
{
cout << m_value << endl;
}
};
int main()
{
Calc cal(10);
/*cal.add(2);
cal.sub(7);
cal.mult(2);*/
cal.add(2).sub(7).mult(4).print();
Calc& temp1 = cal.add(2);
Calc& temp2 = temp1.sub(7);
Calc& temp3 = temp2.mult(4);
temp3.print();
return 0;
}
cal 라는 변수를 선언하고 10을 대입합니다. private 를 이용해 캡슐화를 하고 int 형 변수 m_value 선언합니다.
public 안에서 생성자를 만들어 m_value 값을 변경합니다.
class Calc
{
private:
int m_value;
public:
Calc(int init_value)
:m_value(init_value)
{}
그리고 +, -, * 함수를 만듭니다.
class Calc
{
private:
int m_value;
public:
Calc(int init_value)
:m_value(init_value)
{}
void add(int value) { m_value += value; }
void sub(int value) { m_value -= value; }
void mult(int value) { m_value *= value; }
void print()
{
cout << m_value << endl;
}
};
int main()
{
Calc cal(10);
cal.add(2);
cal.sub(7);
cal.mult(4);
cal.print();
return 0;
}
void 를 이용해 함수를 만들어 사용 할수도 있지만 매번 cal 를 호출해야 한다는 단점이 있습니다.
이럴때 this 포인터를 이용해서 return 값이 지금 나자신의 메모리값을 리턴하게합니다.
class Calc
{
private:
int m_value;
public:
Calc(int init_value)
:m_value(init_value)
{}
Calc& add(int value)
{
m_value += value;
return *this;
}
Calc& sub(int value)
{
m_value -= value;
return *this;
}
Calc& mult(int value)
{
m_value *= value;
return *this;
}
void print()
{
cout << m_value << endl;
}
};
int main()
{
cal.add(2).sub(7).mult(4).print();
return 0;
}
cal.add(2).sub(7).mult(4) 라는 부분은
Calc& temp1 = cal.add(2);
Calc& temp2 = temp1.sub(7);
Calc& temp3 = temp2.mult(4);
이 부분과 동일합니다.
728x90
'C++ > c++ - 따라하며 배우는 c++' 카테고리의 다른 글
c++ 친구 함수와 클래스 friend (0) | 2020.10.30 |
---|---|
c++ static member function (정적 멤버 함수) (0) | 2020.10.29 |
c++ static member 변수 (0) | 2020.10.29 |
c++ class 와 const (0) | 2020.10.28 |
c++ 클래스 코드 와 헤더파일 (0) | 2020.10.28 |
댓글
이 글 공유하기
다른 글
-
c++ static member function (정적 멤버 함수)
c++ static member function (정적 멤버 함수)
2020.10.29 -
c++ static member 변수
c++ static member 변수
2020.10.29 -
c++ class 와 const
c++ class 와 const
2020.10.28 -
c++ 클래스 코드 와 헤더파일
c++ 클래스 코드 와 헤더파일
2020.10.28