๊ธ ์์ฑ์: ๋ฅํด๋ฒ .
1. ์ค๋ช
explicit ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ์ ์์์ ํ๋ณํ์ ๋ง์ ์ ์๋ค.
class A
{
public:
int num;
explicit A(int num) : num(num) {}
};
2. ์์
2.1) explicit ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ(์์์ ํ๋ณํ์ด ์ผ์ด๋ ๊ฒฝ์ฐ)
#include <iostream>
using namespace std;
class A
{
public:
int num;
A(int num) : num(num) {}
};
void print_a(A a)
{
cout << a.num << endl;
}
int main()
{
int n = 1;
print_a(n);
}
1
๊ฐ๋ฐ์๊ฐ print_a ํจ์ ๊ฐ์ ๊ฒฝ์ฐ ํด๋์ค A๋ฅผ ์ธ์๋ก๋ง ๋ฐ์๋ค์ด๊ณ ์ถ์๋ฐ, ์ปดํ์ผ๋ฌ๊ฐ ์์์ ํ๋ณํ์ ํตํด int n์ A ํํ๋ก ๋ฐ๊พผ๋ค.
์ด ๋ A(int n)์ด๋ผ๋ ์์ฑ์๋ฅผ ํตํด ๋ฐ๋๊ฒ ๋๋๋ฐ ์ด๋ฌํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ์๋ํ์ง ์์๋ค๋ฉด ํฌ๋ ํฐ ๋ฒ๊ทธ๋ฅผ ์์ฐํ ์ ์๋ค.
2.2) explicit ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
#include <iostream>
using namespace std;
class A
{
public:
int num;
explicit A(int num) : num(num) {}
};
void print_a(A a)
{
cout << a.num << endl;
}
int main()
{
int n = 1;
print_a(n); // ์ปดํ์ผ ์๋ฌ!
}
๋ค์๊ณผ ๊ฐ์ด explicit ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ์ ์ํ ์์์ ํ๋ณํ์ ๋ฐฉ์งํ ์ ์๋ค.