2、类类型之间的转换:
这个问题也是之前我们上面简单的测试,不能进行类类型之间的转换;现在我们学习了类型转换函数,是可以进行转换的:
代码版本一:
#include <iostream>
#include <string>
using namespace std;
class Test;
class Value
{
public:
Value()
{
}
explicit Value(Test& t)
{
}
};
class Test
{
int mValue;
public:
Test(int i = 0)
{
mValue = i;
}
int value()
{
return mValue;
}
operator Value()
{
Value ret;
cout << "operator Value()" << endl;
return ret;
}
工程上通过以下方式;
Value toValue()
{
Value ret;
return ret;
}
};
int main()
{
Test t(100);
Value v = t;
return 0;
}
输出结果(编译通过):
root@txp-virtual-machine:/home/txp# g++ test.cpp
root@txp-virtual-machine:/home/txp#
注意:这里还有一种让编译器犯难的转换写法;我们上面这样写是用explicit关键字屏蔽了Value类里面的隐式转换,所以不会犯难,下面是犯难的代码示例:
#include <iostream>
#include <string>
using namespace std;
class Test;
class Value
{
public:
Value()
{
}
Value(Test& t)
{
}
};
class Test
{
int mValue;
public:
Test(int i = 0)
{
mValue = i;
}
int value()
{
return mValue;
}
operator Value()
{
Value ret;
cout << "operator Value()" << endl;
return ret;
}
};
int main()
{
Test t(100);
Value v = t;
return 0;
}
大视场像质优秀的光学望远镜是天文巡天观测的核心设备。然而,光学系统中的光学元件失调会造成各视场上的像差有规律的失对称性的退化,降低观测图像的质量,影响望远镜观测效率;利用机器学习技术实现基于星像测量的......
摘要:研究了置于光腔中的两个二能级原子,在强相干场驱动下的共振荧光光场的辐射场相干性质,发现在坏腔条件下,可以通过调节光腔与相干场的频率来提高一阶可见度和减小二阶关联函数.这是因为改变光腔与相干场的频......
摘要分子水平上理解蛋白质吸附的机理,是目前蛋白质工程、生物材料和生物医学领域中一个基本问题。......
摘要一般的蛋白质对接程序能够提供大量的待选构象,但其中仅含有少量的正确构象。现在时接的主要工作在于如何从这些大量构象中挑出正确构象。我们先前的研究工作证明蛋白质界面比非界面表面具有更高的能量。......