已命名的变量

在上面的代码中,仙(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++中,匿名变量主要是用来传递或无需创建临时变量很多这样的返回值。然而,值得注意的是,匿名对象只能通过或返回值!如果一个变量被通过或通过引用或地址返回一个已命名的变量,而不是必须使用。另外值得注意的是,因为匿名变量表达的范围,如果您需要在多个表达式参考价值,你将不得不使用一个已命名的变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值