์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ ๋ฝ
- ๋ ์ผ
- ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
- ๋น๋์คํธ
- ์ด์ฝ ๋ฐ๋๋ ์ฝ์ฝ์
- ๊ฐ์ฌ์ด ๊ณตํญ
- ์ฌ๋ฅํฝ ํ๋ฅดํฌ
- ์๋ฉ๋ฆฌ์นด๋ ธ
- ๋ฒ ๋ก ๋นต
- ๋คํ์ฐ ์์ฉ์
- Qt
- ์์คํ ๋ฅด๋ด ๊ตญ๋ฆฝ ๋ฏธ์ ๊ด
- ์ค์ฌ์นด
- ๋ฆฌ๋ฒ ํฌ๋ฃจ์ฆ
- ์์ด์ค ์๋ฉ๋ฆฌ์นด๋ ธ
- C++
- ํฌ๋ฅด์ ๋ฐ๋ฌผ๊ด
- ์คํ๋ฒ ์ค
- ๋ง์๊ทธ๋ ์ด
- Windows
- ๊ตญ๋ฆฝ ๋ ์ผ ๋ฐ๋ฌผ๊ด
- ๋งค์ค์ปคํผ
- this call
- ํ๋ฆฌ
- ํ๋ก์ฐ๋ฉํฐ
- ๋ํค๋ณด๋ฆฌ
- ๋ฎํจ
- ์ฌํ
- ๋ฃจ๋ธ๋ฅด ๋ฐ๋ฌผ๊ด
- ํ์ด๋ค์ผ ๋งฅ์ฃผ ๋ฐ๋ฌผ๊ด
- Today
- Total
๊ตฌ๋ฆ
[C++11/14][1-1]this call ๋ณธ๋ฌธ
C++ ์์ ๊ฐ์ฒด์ ๋ฉค๋ฒํจ์ ํธ์ถ ๊ณผ์ ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ์ฝ๋๋ฅผ ๋ณด๋ฉด, Point ํด๋์ค์ set ํจ์, foo static ํจ์๊ฐ ์ ์๋์ด ์์ต๋๋ค.
C++ ์์ ๋ฉค๋ฒ ํจ์ ์ ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก this ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
๋ฐ๋ผ์ void set(int a, int b) ๋ void set(Point* const this, int a, int b) ์ ๊ฐ์ผ๋ฉฐ
๋ฉค๋ฒํจ์ ๋ด์ x = a; y = b; ์ญ์ ์ปดํ์ผ ํ์์ this->x = a; this->y = b; ์ ๊ฐ์ด ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง static ํจ์๋ this ๊ฐ ์ถ๊ฐ๋์ง ์๋๋ฐ์,
static void foo(int a) ๋ this ๊ฐ ์ถ๊ฐ๋์ง ์๊ณ ๊ทธ๋๋ก void(int a) ๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฉค๋ฒ๋ณ์์ธ x ์ ์ ๊ทผํ์ง ๋ชปํ๋ฉฐ
์ปดํ์ผ์ ์๋ฌ๊ฐ ๋จ๊ฒ ๋ฉ๋๋ค.
this ๋ฅผ ์ธ์๋ก ๋ฃ์ง ์์๋ ๋๋ฏ๋ก, 21๋ฒ์งธ ์ค ๊ณผ ๊ฐ์ด ๊ฐ์ฒด ์์ด๋ static ํจ์๋ ํธ์ถ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฅผ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ฐ๊พธ์ด ๋ณด๋ฉด
์ด๋ฒ์๋ ์ผ๋ฐ ํจ์(23๋ฒ์งธ ์ค) ์ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ฐ๊พธ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋จผ์ p1.set(10, 20); ์ด set(&p1, 10, 20); ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
1. ๋ฉค๋ฒํจ์์ ํธ์ถ ์๋ฆฌ
๊ฐ์ฒด๊ฐ ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์(this) ๋ก ์ถ๊ฐ๋๋ค. - this call
์ ํํ๋ ecx ๋ ์ง์คํฐ๋ก ์ ๋ฌ๋จ.
2. static ํจ์์๋ this๊ฐ ์ถ๊ฐ๋์ง ์๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด ์์ด ํจ์ํธ์ถ์ด ๋๋ค.
๊ฐ์ ์ด์ ๋ก ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.