c++已经知道如何在内置的数据类型之间进行转换。然而,它不知道如何将我们的任何用户定义的类。这就是重载特型运营商。
重载特型运营商允许我们把我们班转换成另一种数据类型。看看下面的类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class
Cents
{
private
:
int
m_nCents;
public
:
Cents(
int
nCents=0)
{
m_nCents = nCents;
}
// Overloaded int cast
operator
int
() {
return
m_nCents; }
int
GetCents() {
return
m_nCents; }
void
SetCents(
int
nCents) { m_nCents = nCents; }
};
|
有两件事要注意:
1)过载功能让我们班一个int,我们写了一个新的功能在我们的类称为算子int()。请注意,有字算子和我们铸造的类型之间的空间。
2)铸造运营商没有返回类型。C + +假设您将返回正确的类型。
现在,在我们的例子中,我们称这样的printint():
1
2
3
4
5
6
7
|
int
main()
{
Cents cCents(7);
PrintInt(cCents);
// print 7
return
|
c++已经知道如何在内置的数据类型之间进行转换。然而,它不知道如何将我们的任何用户定义的类。这就是重载特型运营商。
重载特型运营商允许我们把我们班转换成另一种数据类型。看看下面的类:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class
Dollars
{
private
:
int
m_nDollars;
public
:
Dollars(
int
nDollars=0)
{
m_nDollars = nDollars;
}
// Allow us to convert Dollars into Cents
operator Cents() {
return
Cents(m_nDollars * 100); }
};
|