对于这个函数而言,输出的是short
为什么呢,为何不是operator呢
首先这设计到一个隐式构造函数的调用
class Test1
{
public:
Test1(int n)
{
num=n;
}//普通构造函数
private:
int num;
};
class Test2
{
public:
explicit Test2(int n)
{
num=n;
}//explicit(显式)构造函数
private:
int num;
};
int main()
{
Test1 t1=12;//隐式调用其构造函数,成功
Test2 t2=12;//编译错误,不能隐式调用其构造函数
Test2 t2(12);//显式调用成功
return 0;
}
这里可以看到Test1 t1=12,调用成功,这里隐式调用了test1的构造函数,而第二条出错了,因为这里加了explicit头文件,这个头文件表示只允许构造函数显示调用,题目中的第一个构造函数加了explicit前缀,这个构造函数不能调用,只能调用第二个构造函数,这里有说明了一点,就是隐式调用构造函数参数可以隐式类型转换,
题目中的operator =里面的内容没有调用,因为对于=的重载只有在类初始化完成之后才能够调用,这里的类还处于初始化阶段,因此对于=的重载没有调用