friend ν€μλμ μ΄μ΄μ explicit ν€μλμ λν΄μλ κ°λ΅νκ² μ 리νκ³ λμ΄κ°λ³΄λ € νλ€.
(νλ¦° λΆλΆμ΄ μλ€λ©΄ λ§μν΄μ£ΌμΈμ.)
ν΄λΉ ν€μλλ μ΄λ€ λͺ¨νΈν νμ μ΄ λ€μ΄μμ λ μλμΌλ‘ νλ³νμ΄ λλ€λ©΄, ν΄λΉ νμ μΌλ‘ λ³νμ ν΄μ£Όλ κ²μ΄λ€.
κ°λ΅ν μμλ₯Ό λ°νμΌλ‘ μ€λͺ ν΄λ³΄κ² λ€.
#include <iostream>
class MyData {
public:
int my_int_data;
MyData(int md): my_int_data(md) {}
~MyData(){};
int get_data() const {return my_int_data;}
};
void increament_and_show(MyData md) {
int tmp=md.get_data();
std::cout << "my data + 1: " << ++tmp << std::endl;
}
int main() {
increament_and_show(3);
return 0;
}
ν΄λΉ μ½λλ₯Ό μ€ννμ λ 4κ° λμ€λ κ²μ΄ μ μμΈλ°, ν κ°μ§ μ΄μν μ μ λ°κ²¬ν μ μλ€.
increament_and_show() ν¨μμ λ§€κ°λ³μλ‘ λ€μ΄κ°λ κ°μ μμλ‘ 3μ΄λΌλ κ°μ΄ ν λΉλλ€.
νμ§λ§, λ°μμ§λ κ°μ MyData νμ μΌλ‘ λ°λλ€.
μ΄ λΆλΆμμ μλ¬Έμ μ΄ μκΈ°λλ°, μ΄λ»κ² μ΄λ° κ²μ΄ κ°λ₯ν κΉ?
μ΄λ° νλ‘κ·Έλλ°μ΄ κ°λ₯ν μ΄μ λ C++μμ Automatic Conversionμ΄ λ°μνκΈ° λλ¬Έμ΄λ€.
μ΄λ μλμΌλ‘ λ³νμ μμΌμ£Όλ κ²μΈλ°, 3μ΄λΌλ κ°μ΄ λ€μ΄μ¨λ€λ©΄ λ§€κ°λ³μμ ν λΉλ λ MyData Classμ μμ±μμμ int typeμ λ°λ μμ±μκ° μλμ§ νμΈνκ³ ν΄λΉ μμ±μκ° μ‘΄μ¬νλ€λ©΄ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€μ΄ mdμ ν λΉνλ κ²μ΄λ€..
νμ§λ§ μ΄λ° λͺ¨νΈν νλ‘κ·Έλλ°μ΄ μ’μ§ μμ κ²½μ°κ° λ§κΈ° λλ¬Έμ, μ°λ¦¬λ explicitμ΄λΌλ ν€μλλ₯Ό μ΄μ©νμ¬ Automatic Conversionμ λ°©μ§ν μ μλ€.
μ¬μ©νλ λ°©λ²μ λ€μκ³Ό κ°λ€.
#include <iostream>
class MyData {
public:
int my_int_data;
explicit MyData(int md): my_int_data(md) {}
~MyData(){};
int get_data() const {return my_int_data;}
};
void increament_and_show(MyData md) {
int tmp=md.get_data();
std::cout << "my data + 1: " << ++tmp << std::endl;
}
int main() {
increament_and_show(3);
return 0;
}
μμ±μ μμ explicitμ λΆμ¬μ£Όμ΄ μ¬μ©μ΄ κ°λ₯νλ€.
μ΄λ κ² μ½λλ₯Ό μ§κ² λλ€λ©΄ increament_and_show(3); λΌμΈμμ μ€λ₯κ° λ°μνκ² λλ€.
'πΎ CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[html, JS] inputμ μ ν¨μ± κ²μ¬ (0) | 2023.11.09 |
---|---|
[μμΉνλ‘κ·Έλλ°] ν©κΈλΆν νμλ² (0) | 2023.10.28 |
μ΅μ ν μ μ, μμ(κ°λ¨) (0) | 2023.10.28 |
[C++] noexcept Keyword (0) | 2023.10.17 |
[C++] friend Keyword (0) | 2023.10.07 |