일상 코딩
[C++/8.7] this 포인터와 연쇄호출, pointer and chaining member function 본문
C++/따배C++ 08강 객체지향 기초
[C++/8.7] this 포인터와 연쇄호출, pointer and chaining member function
polarcompass 2021. 10. 22. 03:34728x90
1. this 포인터 (포인터 주소 확인)
#include<iostream>
using namespace std;
class Simple
{
private:
int m_id;
public:
Simple(int id)
{
// this 는 s1의 포인터 주소.
setID(id);
cout << this << endl;
}
void setID(int id) { m_id = id; }
int getID() { return m_id; }
};
int main()
{
Simple s1(1), s2(2);
s1.setID(2);
s2.setID(4);
cout << &s1 << " " << &s2 << endl;
// Simple::setID(&s2, 4); == s2.setID(4);
return 0;
}
2. 연쇄호출
#include<iostream>
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 div(float value) { m_value /= value; }
void print() { cout << m_value << endl; }
};
int main()
{
Calc cal{10};
cal.add(10).sub(1).mult(2).print();
// cal.add(10);
// cal.sub(1);
// cal.mult(2);
// cal.print();
Calc &temp1 = cal.add(10);
Calc &temp2 = temp1.sub(1);
Calc &temp3 = temp2.mult(2);
temp3.print();
return 0;
}
728x90
'C++ > 따배C++ 08강 객체지향 기초' 카테고리의 다른 글
[C++/8.9] 클래스와 const, reference(&) (0) | 2021.10.23 |
---|---|
[C++/8.8] 클래스 코드의 헤더파일 및 바디파일 분할. (0) | 2021.10.22 |
[C++/8.6] CLASS 소멸자, destructor (0) | 2021.10.21 |
[C++/8.5] CLASS 위임 생성자, 초기화 함수 이용 (0) | 2021.10.21 |
[C++/8.4] 생성자 멤버 초기화 (0) | 2021.10.21 |