Я могу избежать неявного преобразования конструктора с помощью ключевого слова explicit
. Так что теперь можно избежать таких преобразований, как A a1 = 10;
.
Но все же я могу инициализировать A a1 = A(20.2);
. Как я могу отключить создание объекта, чтобы объект мог быть создан только в том случае, если мы передаем целое число в качестве параметра, например, A a1 = A(10)
?
#include <iostream>
class A
{
public:
explicit A(int a)
{
num = a;
}
int num;
};
int main()
{
A a1 = A(10.0);
std::cout << a1.num;
return 0;
}