explicit关键字

文章目录
  1. 1. 用在一个实参上的 explicit。
  2. 2. 用在多个实参上的 explicit

用在一个实参上的 explicit。

1
2
3
4
5
6
7
8
9
struct Complex {
int real, imag;
Complex(int re, int im = 0): real(re), imag(im){}
Complex operator+(const Complex& x) {
return Complex((real + x,real), (imag + x.imag));
}
}
Complex c1(12, 5);
Complex c2 = c1 + 5; // 会调用构造函数 将 5 隐式转换为 Complex
1
2
3
4
5
6
7
8
9
struct Complex {
int real, imag;
explicit Complex(int re, int im = 0): real(re), imag(im){}
Complex operator+(const Complex& x) {
return Complex((real + x,real), (imag + x.imag));
}
}
Complex c1(12, 5);
Complex c2 = c1 + 5; // [Error] no match for 'operator+'(operand types are 'Complex' ands 'int')

用在多个实参上的 explicit