C++ μμ ν¨μμ μΈμλ₯Ό μ λ¬νλ©΄, μ λ¬λ μΈμ κ·Έ μμ²΄κ° μλ κ·Έ μΈμμ κ°μ΄ 볡μ¬λμ΄ μ¬μ©λ©λλ€.
μ¦, ν¨μ λ΄μμ λ°λ‘ λ³μμ κ°μ λ³νμν€λ νμλ₯Ό νμ§ μλ μ΄μ μλ³Έ κ°μ λ³νλ μμ΅λλ€.
μ΄λ₯Ό μ°λ¦¬λ 'pass by value' λ°©λ²μΌλ‘ λΆλ¦ λλ€.
Passy by value(κ°μ μν μ λ¬)μ μ°λ¦¬κ° κΈ°μ‘΄μ μ¬μ©νλ λͺ¨λ ν¨μλ€μ΄ νκ³ μμ΅λλ€.
C++ ν¨μμ κΈ°λ³Έ μλ λ°©λ²μ λλ€.
νμ§λ§, μ°λ¦¬λ ν¨μλ₯Ό ν΅ν΄ μλ³Έ κ°μ λ³νλ₯Ό μ£Όκ³ μΆμ λκ° μμ΅λλ€.
λλ λ§€μ° ν¬κΈ°κ° ν° λ²‘ν°μ κ°μ μλ£μ λν΄μ λ°μ΄ν°μ λλΉλ₯Ό λ°©μ§νκ³ μ νκ³ μΆμ μλ μμ΅λλ€.
ν¬κΈ°κ° μμ² ν° λ²‘ν°λ₯Ό λ€λ£¨λλ° κ΅³μ΄ λμΌν 벑ν°λ₯Ό 볡μ¬ν΄μ μ μ₯ν νμλ μμ λλ μμ ν λκΉμ.
κ·Έλ κ² νκΈ° μν΄μλ, μ°λ¦¬λ ν¨μμ μΈμλ‘μ¨ νμ©λ 맀κ°λ³μμ μμΉ(μ£Όμ)κ°μ μ λ¬ν΄μΌ ν©λλ€.
μ΄λ reference parametersλ₯Ό νμ©νμ¬ ν μ μμ΅λλ€.
C++μμ reference parametersλ₯Ό μ¬μ©νλ λ°©λ²μ λ§€μ° μ½μ΅λλ€.
λ°λ‘ ampersand symbol(&)λ₯Ό μ¬μ©νλ κ²λλ€.
μ΄ λ°©λ²μ μ°λ¦¬λ 'pass by reference' λΌκ³ λΆλ¦ λλ€.
λ€μ μ½λμμ μ½κ² μμλ³΄κ² μ΅λλ€.
void scale_number(int &num);
int main() {
int number {1000};
cout << number << endl;
scale_number(number);
cout << number << endl;
return 0;
}
void scale_number(int &num){
if (num > 100)
num = 100;
}
κΈ°μ‘΄μ ν¨μμμ 맀κ°λ³μμ λν κ° λ³νλ μλ³Έ μΈμ κ°μ λ³νλ‘ μ΄μ΄μ§μ§ μμμ΅λλ€.
νμ§λ§ μ°λ¦¬κ° & κΈ°νΈλ₯Ό νμ©ν pass by reference λ°©λ²μΌλ‘,
λ§€κ° λ³μλ‘ μ¬μ©λ μλ³Έ λ³μμΈ μ μ numberκ° 1000μμ 100μΌλ‘ λ³ννμμ νμΈν μ μμ΅λλ€.
μ΄λ¬ν 'μ°Έμ‘°λ‘ μ λ¬νκΈ°' λ°©λ²μ νκ°μ§ λ§€κ° λ³μλ§ μ¬μ©ν μ μλ κ²μ μλλλ€.
λκ° μ΄μμ λ§€κ° λ³μμ λν΄μλ νμ©ν μ μμ΅λλ€.
λ§μ½ λ°μ΄ν° κ΄λ¦¬λ₯Ό μν΄ μ΄ λ°©λ²μ νμ©νκ³ μμ§λ§ λ°μ΄ν° κ°μ λ³νμ μνμ§ μλλ€λ©΄ μ΄λ»κ² ν κΉμ?
λ΅μ κ°λ¨ν©λλ€. const ν€μλλ₯Ό ν¬ν¨μν€λ©΄ λ©λλ€.
void print (const std::vector<int> &v);
νλ‘ν νμ κ³Ό ν¨μμ μ μΈ λ μ΄λ° μμΌλ‘ νλ©΄ μ€μλ‘ κ°μ΄ λ³κ²½λλ μΌμ λ°©μ§ν μ μμ΅λλ€.