cpp_explicit - 8BitsCoding/RobotMentor GitHub Wiki

explicit

explicit

μ •μ˜ : λͺ…μ‹œμ ν˜ΈμΆœλ§Œ ν—ˆμš©

  • μ’€ 더 μžμ„Ένžˆ μ„€λͺ…ν•˜μžλ©΄... C++ μ»΄νŒŒμΌλŸ¬λŠ” ν•¨μˆ˜μ˜ 인자둜 λ“€μ–΄μ˜€λŠ” 값을 μ•Œμ•„μ„œ νƒ€μž…μ— 맞게 λ°”κΏ€ 수 μžˆλ‹€. 예제둜 보자.
class Foo {
public:
  int m_foo;
  Foo( int foo ) : m_foo(foo) {}
};

void printM_foo( Foo foo ) {
  cout << foo.m_foo << endl;
}

int main() {
  int num = 43;
  printM_foo(num);
}
// μ•ˆλ κΊΌ κ°™μ§€λ§Œ 잘 λœλ‹€. 컴파일러 μžμ²΄μ—μ„œ λ³€μˆ˜λ₯Ό λ°”κΏ”μ£ΌκΈ° λ•Œλ¬Έμ΄λ‹€.

ν˜Ήμ‹œλ‚˜ λͺ¨λ₯Ό 버그방지λ₯Ό μœ„ν•΄μ„œ explicit을 ν†΅ν•΄μ„œ λ§‰μ•„λ³΄μž.

class Foo {
public:
  int m_foo;
  explicit Foo( int foo ) : m_foo(foo) {}
};
// μƒμ„±μž 선언을 ν•  μ‹œ λͺ…μ‹œμ  선언이 ν•„μš”.

void printM_foo( Foo foo ) {
  cout << foo.m_foo << endl;
}

int main() {
  int num = 43;
  printM_foo(num);
}