๊ธ€ ์ž‘์„ฑ์ž: ๋˜ฅํด๋ฒ .
๋ฐ˜์‘ํ˜•

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 ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•œ ์•”์‹œ์  ํ˜•๋ณ€ํ™˜์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•

'Language > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C++] keyword: friend  (0) 2020.07.23
[C++] keyword: static  (0) 2020.07.23
[C++] keyword: inline, __inline, __forceinline  (0) 2020.07.22
[C++] keyword: const  (0) 2020.07.22
[C++11] keyword: final  (0) 2020.07.22