Excute Around Method ¶
κ°μ΄ μΌμ΄λμΌλ§ νλ νλμ μ΄λ»κ² ννμ ν μ μμκΉ? μλ₯Ό λ€λ©΄ νμΌμ μ΄μλ€λ©΄ λ«μμΌνλ€. DCλ₯Ό μ»μ΄μμΌλ©΄ ν΄μ ν΄μ€μΌ νλ€. λ±λ±...
λ μ΄λ°μμΌλ‘ ν΄μ£Όλ©΄ λ λ―νλ€.
λ μ΄λ°μμΌλ‘ ν΄μ£Όλ©΄ λ λ―νλ€.
~cpp class Foo { public: void openFilenClose() { ifstream fin("data.txt"); /* ... μμ */ fin.close(); } };λ΄κ° 보기μ μ λ°©λ²μ΄ μ’μ보μ΄λλ°... ν΄λΌμ΄μΈνΈλ‘ νμ¬κΈ μ΄ κ°μ²΄λ₯Ό λ°°μ°κΈ°κ° λ μ΄λ ΅κ² λ§λ λ€κ³ νλ€. κ·Έλ΄κΉ? μ λͺ¨λ₯΄κ² λ€. μ’ λ μ¨λ³΄λ©΄ μ λ―νλ€.
μ€λͺ°ν ν¬μμλ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ ν΄κ²°νκ³ μλ€. μ€λͺ°ν ν¬μλ Blockμ΄λΌλ κ°μ²΄κ° μλ€. μ΄ λΈλ‘μ νλΌλ©ν°λ‘ λ겨주λ κ²μ΄λ€. μ¦ 1. νμΌ μ°λ€. 2. μμ
λΈλ‘μ νλΌλ©ν°λ‘ λ겨μ€λ€. 3. νμΌ λ«λλ€. μ΄λ°μμΌλ‘ λλ κ²μ΄λ€. C++μμλ ν¨μ ν¬μΈν°λ₯Ό λ겨주λ λ°©λ²μΌλ‘ ν΄κ²°ν μ μμ λ―νλ€. μ΄λ° κ²μ Higher Order Programmingμ΄λΌκ³ νλ κ² κ°λ€.(SICP) C++μμ λ©€λ² ν¨μλ μμΉμ μΌλ‘ ν¨μ ν¬μΈν°κ° μλλ κ²μΌλ‘ μκ³ μλ€. κ·Έλλ κ·Έλ₯ κ·Έλ°κ° λ³΄λ€ νμ. μ λ§ μ΄μνλ€.--;
C++ μμλ λ©€λ²ν¨μμ λν΄ ν¨μν¬μΈν° λκΈ°κΈ°κ° κ°λ₯ν¨. (λ¬Έλ²μ μκ° μλ¨) --1002
~cpp void do( (void*) writeProcess() ) { fin.open("data.txt"); // λ§λ?--; writeProcess(); fin.close(); } void writeData() { fin << "νμ΄"; fin << "nice to meet you." } int main() { do(writeData); }