class Obj
{
public:
Obj(int a, int b)
{
_a = a;
_b = b;
}
Obj(int a)
{
_a = a;
}
//explicit Obj(int a)
//{
// _a = a;
//}
private:
int _a;
int _b;
};
void fun(Obj o)
{
}
int main()
{
Obj oo = { 12 };//Obj{12}
Obj o = (12, 13);
fun(12);//此时12被隐式转换成Obj对象, 构造函数前加上explicit, 不存在该问题
return 0;
}
C++构造函数与隐式类型转换

本文探讨了C++中对象构造函数的使用,特别是隐式类型转换可能导致的问题。示例展示了如何通过explicit关键字防止隐式转换,以提高代码的清晰性和安全性。
4314

被折叠的 条评论
为什么被折叠?



