μ€λμ μ£Όμ λ λ³΅μ¬ μμ±μμ λλ€. κ°λ¨ν μ μλ₯Ό λ΄λ¦¬μλ©΄ μκΈ°μμ κ³Ό κ°μ ννμ κ°μ²΄λ₯Ό μΈμλ‘ λ°λ μμ±μν¨μλ₯Ό λ§ν©λλ€. κ·ΈλΌ λ³΅μ¬μμ±μκ° μ΄λ»κ² μ¬μ©νλμ§ μμ λ³ΌκΉμ.
class AAA{
private:
int a;
public:
AAA(){
a=10;
}
AAA(int x){
a=x;
}
AAA(AAA& op){ //볡μ¬μμ±μ
a=op.x;
}
}
μμ κ°μ΄ μμ±μ ν¨μμΈλ° μμ±μ ν¨μ μΈμκ° μκΈ°μμ κ³Ό κ°μ κ°μ²΄λ₯Ό μΈμλ‘ λ°μ ννλ₯Ό λ§ν©λλ€.
AAA op1(20);
AAA op2(op1);
μ΄λ κ² op1κ°μ²΄κ° μ μΈλκ³ λλ€μ op2κ° μ μΈν λ op1μ μΈμλ‘ λ겨μ€λλ€. μ¬κΈ°μμ op1μ aκ° 20μΈ κ°μ κ°κ³ κ·Έ κ°μ΄ op2μ λκ²¨μ£Όκ² λ©λλ€.
λκ°μ§ ννλ‘ μ¬λλ€μ΄ νννλλ° μ μ½λ©μ²λΌ ννν΄λ λμ§λ§ μλμ κ°μ΄ κ³ μ μμΌ νννκΈ°λ ν©λλ€.
AAA(const AAA &op){
a=op.a;
}
μ΄ κ²½μ°λ λ³κ²½ μλκ² κ³ μ ν μν΅λλ€.
λ€λ₯Έ λ°©λ²μΌλ‘λ
explicit AAA(const AAA &op){
a=op.a;
}
λ‘ μ»΄νμΌλ¬κ° λ€μ΄μ€λ μΈμλ₯Ό μμμ νμ μ λ§κ² λ§μΆ°μ€λλ€. μ νμ μμ μ΄κ³ μ.
λν΄νΈ μμ±μ ν¨μμ μΈμκ° μλ μμ±μ ν¨μμ λ³΅μ¬ μμ±μ ν¨μμ κ²°κ³Όλ₯Ό μ€ν μμΌ λ΄ μλ€.
[μ 체μμ€]
#include
using namespace std;
class AAA {
private:
int a;
public:
AAA(){
a=10;
cout<<"μμ±μ1"<<endl;
}
AAA(int x){
a=x;
cout<<"μμ±μ2"<<endl;
}
explicit AAA(AAA &op){
a=op.a;
cout<<"볡μ¬μμ±μ"<<endl;
}
void output(){
cout<<"a = "<<a<<endl;
}
};
int main(int argc, char** argv) {
AAA op1;
AAA op2(30);
AAA op3(op2);
op1.output();
op2.output();
op3.output();
return 0;
}
λν΄νΈ μΈμκ° μλ κ·Έλ₯ κ°μ²΄λ₯Ό μ μΈ ν λμ μΈμκ° μμ λ κ°μ²΄λ₯Ό μ μΈνλ κ²μ μΆλ ₯ν΄λ³΄κ³ λ§μ§λ§μΌλ‘ μ€λ μ£Όμ μΈ κ°μ²΄ μΈμλ₯Ό λμ 볡μ¬μμ±μλ₯Ό μΆλ ₯ν΄λ³΄λ μ€μ΅μ ν΄λ³΄μλ€μ.
[κ²°κ³Ό]
μΈκ°μ§ κ²°κ³Όκ° μ μμ μΌλ‘ μΆλ ₯ λμμ£ . νΈμΆμ΄ μ΄λ»κ² λκ³ κ·Έ 겨λ‘κ°κ° μ΄λ»κ² λμ€λμ§ νμΈνμ¬ μ리λ₯Ό μ΄ν΄νμκΈ° λ°λλλ€.
λ³΅μ¬ μμ±μ κ°μ κ²½μ°λ κ·Έλ κ²κΉμ§ λ§μ΄ μ¬μ©νμ§λ μμ΅λλ€. κ΅³μ΄ μΈμλ₯Ό λμ κ°μ λ±λ‘νλ λ°©μμ μ·¨νμ§ μ΄λ―Έ κ°μ²΄κ° μ μΈλ κ²μ κ°μ²΄ μΈμλ‘ λ€μ λμ Έμ£Όμ΄ μλ‘μ΄ κ°μ²΄μ 볡μ¬νλ κ²½μ°λ λλ¬Ό κ² κ°λ€μ. κ·Έλ₯ μ΄λ°κ² μλ€λ κ²λ§ μ΄ν΄νμλ©΄ λ λ― μΆλ€μ.