์ธ๋ผ์ธ ํจ์
ํจ์ ํธ์ถ ์์๋ ์ฝ๊ฐ์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค. ์ฆ ํจ์ ํธ์ถ ์ ์ ๋ชจ๋ ๋ ์ง์คํฐ(CPU ์์ ์ ์ฅ ๊ณต๊ฐ)๊ฐ ์ ์ฅ๋์ด์ผ ํ๊ณ ์ธ์๋ค์ ๋ณต์ฌ๋์ด์ผ ํ๋ค. ํจ์ ํธ์ถ ํ์๋ ๋ ์ง์คํฐ๋ค์ด ๋ค์ ๋ณต๊ตฌ๋์ด์ผ ํ๋ค.
๋ง์ฝ ์์ฃผ ๊ฐ๋จํ ํจ์๋ผ๋ฉด ํจ์ ์์ ๋ฌธ์ฅ์ ์คํํ๋ ์๊ฐ๋ณด๋ค ํจ์ ํธ์ถ์ ์ค๋นํ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆด ์ ์๋ค. ๋ฐ๋ผ์ ํฌ๊ธฐ๊ฐ ์์ ํจ์์ ๊ฒฝ์ฐ์๋ ์ฐจ๋ผ๋ฆฌ ํจ์ ํธ์ถ์ ํ์ง ์๊ณ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ์ ๋ฃ์ด์ฃผ๋ ํธ์ด ํจ์จ์ ์ผ ์ ์๋ค.
c++์๋ ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ์ inline์ด๋ผ๊ณ ํ๋ ํค์๋๊ฐ ์ค๋น๋์ด ์๋ค. ๋ง์ฝ ํจ์ ์ด๋ฆ ์์ inline์ด ๋ถ์ผ๋ฉด ์ปดํ์ผ๋ฌ๋ ํจ์ ๋ฅด ์์ฑํ์ง ์๊ณ ํจ์์ ์ฝ๋๋ฅผ ํธ์ถํ ๊ณณ์ ์ง์ ์ง์ด๋ฃ๋๋ค. ์ด๋ฌํ ํจ์๋ฅผ ์ธ๋ผ์ธ ํจ์(inline function)๋ผ๊ณ ํ๋ค. ํจ์๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ๋ง๋ค๋ฉด ํจ์ ํธ์ถ ์ค๋ฒํค๋๊ฐ ์ฌ๋ผ์ง๋ฏ๋ก ํ๋ก๊ทธ๋จ์ด ๋ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋ค.
์ธ๋ผ์ธ ํจ์๋ก ์ ์ํ๋ ค๋ฉด ํจ์์ ๋ฐํํ ์์ inline๋ง ๋ถ์ด๋ฉด ๋๋ค. ํ๋์ ์๋ก ์ฃผ์ด์ง ๊ฐ์ ์ ๊ณฑํ๋ ํจ์๋ฅผ ์ธ๋ผ์ธ ํจ์๋ก ์์ฑํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
//์ค์๊ฐ์ ์ ๊ณตํ๋ ํจ์
inline double square(double i)
{
return i*i;
}
- ์ฒ์ธ๊ตญ ์ , [์ด์์ c++์ ์ฒ์์ด์ง!], p.145 ๋ฐ์ทํฌ์คํ
๋ฉค๋ฒ ํจ์์ ๋ด๋ถ ์ ์์ ์ธ๋ถ ์ ์ ์ฐจ์ด์
๋ฉค๋ฒ ํจ์๋ฅผ ํด๋์ค ๋ด๋ถ์ ์ ์ํ๋ ๊ฒ๊ณผ ํด๋์ค ์ธ๋ถ์ ์ ์ํ๋ ๊ฒ์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์๋ค.
- ๋ฉค๋ฒ ํจ์๊ฐ ํด๋์ค ๋ด๋ถ์ ์ ์๋๋ฉด ์๋์ ์ผ๋ก ์ธ๋ผ์ธ(inline) ํจ์๊ฐ ๋๋ค. ๋ฐ๋ผ์ ๋ฉค๋ฒ ํจ์ ํธ์ถ์ด ๋ฉค๋ฒ ํจ์์ ์ฝ๋๋ก ๋์น๋๋ค.
- ๋ฉค๋ฒ ํจ์๊ฐ ํด๋์ค ์ธ๋ถ์ ์ ์๋๋ฉด ์ผ๋ฐ์ ์ธ ํจ์์ ๋์ผํ๊ฒ ํธ์ถ๋๋ค. ์ฆ ์คํ์ ์ธ์๋ค์ ์ ์ฅํ๊ณ ๋ณต๊ท ์ฃผ์๋ฅผ ์ ์ฅํ ํ์ ๋ฉค๋ฒ ํจ์๋ก ์ ์ด๊ฐ ์ด๋ํ๋ค.
๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฉค๋ฒ ํจ์์ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ํด๋์ค ๋ด๋ถ์ ์ ์ํ๋ ๊ฒ์ด ์ข์ ์ ์๋ค. ํ์ง๋ง ๋ฉค๋ฒ ํจ์์ ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝ์ฐ์ ํด๋์ค ๋ด๋ถ์ ์ ์ํ๋ฉด ์ฝ๋์ ๋ณต์ฌ๊ฐ ์ฌ๋ฌ ๋ฒ ์ผ์ด๋์ ์คํ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ปค์ง ์ ์๋ค. ์ฆ ์ธ๋ผ์ธ ํจ์์ ์ฅ๋จ์ ์ ๊ฐ์ง๊ฒ ๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ์๊ฐ ์ ํํ ๋ฌธ์ ์ด๋ค. ์ค์ ์์๋ ๋ณดํต ๋ฉค๋ฒ ํจ์๋ฅผ ํด๋์ค ์ธ๋ถ์ ๋ง์ด ์ ์ํ๋ค.
- ์ฒ์ธ๊ตญ ์ , [์ด์์ c++์ ์ฒ์์ด์ง!], p.192 ๋ฐ์ทํฌ์คํ
'C++ > c++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c][c++] const ์ ํ์, ๋ณ์๋ฅผ ์์์ฒ๋ผ ์ฌ์ฉ (0) | 2022.06.12 |
---|---|
[์ฉ์ด] ์ ์ธ๊ณผ ์ ์์ ์ฐจ์ด (0) | 2022.04.20 |
ํฌ์ธํฐ, ์ด์คํฌ์ธํฐ (0) | 2022.04.14 |
[C++] ๋ฌธ์์ด, String ํด๋์ค (0) | 2022.02.07 |
[์ฐธ๊ณ ์ฉ] ์ซ์ n์ k์ง๋ฒ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ (0) | 2022.02.06 |