[C++] IIFE ํธ๋ฆญ
IIFE๋ ๋ฐ๋ก ํธ์ถ๋๋ ํจ์ ํํ์(Immediately-invoked function expression)์ ์ฝ์๋ก, ๋ณต์กํ ์ด๊ธฐํ๋ฅผ ์ ๋ํ ๋ ์ฌ์ฉํ๋ค.
๋ชจ๋ ์ด๊ธฐํ ์์
์ด ๋ฑ ์์ฑ์๋ ๋จ์ ๋์
๋ง์ผ๋ก ๋๋๋ฉด ์ฐธ ์ข๊ฒ ์ง๋ง.
์์ฝ๊ฒ๋ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ํน์ ๊ฐ์ ๋์
ํ์ ์ถ๊ฐ์ ์ธ ์กฐ๊ฑด์์ ์ํํ๊ฑฐ๋... ๋ฃจํ๋ฅผ ๋๊ฑฐ๋... ๋ก์ง์์ผ๋ก ๊ทธ๋ ๊ฒ ๋ ์๋ฐ์ ์๋ ๊ฒฝ์ฐ๋ค.
ใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
ก
int foo = 1;
if(?)
**ย ย ย foo+=?**
else
**ย ย ย foo*=?**
//์ดํ๋ก foo๋ ๋ณ๊ฒฝ๋์ง ์์
ใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
ก
์์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๋จ๊น. ์๋ฏธ์์ผ๋ก๋ ์์์ง๋ง, ๋ถ๊ฐํผํ๊ฒ ์์
ํ ๊ฒ ์์ด const๋ฅผ ๋ถ์ด์ง ๋ชปํ๋ค.
๊ทธ๋ผ ๋ญ ์ด๋ป๊ฒ ํด์ผํ ๊น? ํจ์๋ก ๋ถ๋ฆฌํ ๊น?
๊ทธ๊ฒ๋ ๋์์ง ์์ ๋ฐฉ๋ฒ์ด๊ธด ํ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค. C++11์ ๋๋ค๋ฅผ ์ฐ๋ ๊ฒ์ด๋ค.
๋๋ค๋ฅผ ์์ฉํ๋ฉด ์ด๋ ๊ฒ ๋ฐ๊ฟ ์ ์๊ฒ ๋ค.
ใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
ก
const int foo = []{
**ย ย ย int sum = 1;**
**ย ย ย if(?)
****ย ย ย ย ย ย ย foo+=?**
****ย ย ย else****
****ย ย ย ย ย ย ย foo*=?****
****ย ย ย return;****
}();
ใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
ก
๋๋ค๋ฅผ ์์ฑํด์ ๋ฐ๋ก ํธ์ถ, ๋ณ์์ ๋ฐ์ธ๋ฉํ๋ค.
์ด๋ฌ๋ฉด ๋ณ์์ ์์์ฑ๋ ๋ณด์กดํ ์ ์๊ณ ,
์ด๊ธฐํ ์์
๋ค์ ์ ๋๋ค ์์ ๊ฐ๋ฌ์ ๋ถ๋ฆฌํ ์๋ ์๋ค.
์ฐธ์กฐ
https://www.bfilipek.com/2016/11/iife-for-complex-initialization.html?m=1