explicit单参数构造函数问题
#include<iostream>
using namespace std;
class A
{
public:
explicit A(int i) : data(i){}
int val(){return data;}
private:
int data;
};
A func(A a)
{
return (a.val());
};
int main()
{
A a1(123);
A a2 = func(A(456));//类A的单参数构造函数用explicit显式指定后 调用func时实参必须为A类型数据 用int数据编译错误
//但是为什么返回值还是可以调用单参数构造函数将int数据转换为A类型数据
cout<<a2.val()<<endl;
system("pause");
return 0;
}
问题在注释处,谢谢大家!