在上面的代码中,仙(7)将创建一个匿名对象初始化它美分,与7的值,然后摧毁它。
在这样的背景下,这是不会做我们好。
让我们
看一个例子,
它
可以很好地加以利用
:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
class
Cents
{
private
:
int
m_nCents;
public
:
Cents(
int
nCents) { m_nCents = nCents; }
int
GetCents() {
return
m_nCents; }
};
Cents Add(Cents &c1, Cents &c2)
{
Cents cTemp(c1.GetCents() + c2.GetCents());
return
cTemp;
}
int
main()
{
Cents cCents1(6);
Cents cCents2(8);
Cents cCentsSum = Add(cCents1, cCents2);
std::cout <<
"I have "
<< cCentsSum.GetCents() <<
" cents."
<< std::endl;
return
0;
}
|
注意,这个例子是前一个使用整数非常相似。在这种情况下,我们的add()功能是构建一个短暂的ctemp变量,只作为一个占位符。我们也使用一个ccentssum变量main()。
我们可以通过匿名变量简化这一程序:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class
Cents
{
private
:
int
m_nCents;
public
:
Cents(
int
nCents) { m_nCents = nCents; }
int
GetCents() {
return
m_nCents; }
};
Cents Add(Cents &c1, Cents &c2)
{
return
Cents(c1.GetCents() + c2.GetCents());
}
int
main()
{
Cents cCents1(6);
Cents cCents2(8);
std::cout <<
"I have "
<< Add(cCents1, cCents2).GetCents() <<
" cents."
<< std::endl;
return
0;
|
这个版本的add()功能相同的一个以上的,除了它使用匿名美分价值而不是一个命名变量。还注意到,在main(),我们不再使用命名ccentssum变量作为临时存储。相反,我们使用的返回值的add()匿名!
作为一个结果,我们的计划是短的,清洁的,和一般容易跟随(一旦你理解的概念)。
在C++中,匿名变量主要是用来传递或无需创建临时变量很多这样的返回值。然而,值得注意的是,匿名对象只能通过或返回值!如果一个变量被通过或通过引用或地址返回一个已命名的变量,而不是必须使用。另外值得注意的是,因为匿名变量表达的范围,如果您需要在多个表达式参考价值,你将不得不使用一个已命名的变量。

1万+

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



