我在课堂上有很多重载的功能.在这种情况下,我应该将int32_t数据声明为类的成员变量,所以我不是在每个函数中反复声明它吗?Fill函数总是通过引用设置一个值,所以我认为我不应该每次都在每个函数中声明它.
这里没有列出大约20多个这些功能:
void TransmitInfo(TypeA &dp, Id &tc)
{
//do lots of other work here
int32_t data;
while (dp.Fill(data)) //Fill accepts a reference variable, "data" gets populated
{
Transmit(tc, data);
}
}
void TransmitInfo(TypeB &dp, Id &tc)
{
//do lots of other work here
int32_t data;
while (dp.Fill(data))
{
Transmit(tc, data);
}
}
void TransmitInfo(TypeC &dp, Id &tc)
{
//do lots of other work here
int32_t data;
while (dp.Fill(data))
{
Transmit(tc, data);
}
}
Run Code Online (Sandbox Code Playgroud)
在选择声明变量的位置时,范围不是唯一要考虑的因素.同样重要的是变量的生命周期以及变量的创建时间.
在函数内部声明变量时,无论何时调用该函数,都会创建它,如果需要,则会多次(递归!).当函数退出时它就被破坏了.在简单类型的情况下,这些创建/破坏是CPU的noopsint32_t.
在类中声明它时,每个创建的对象只能获得一个变量副本.如果你的一个函数调用另一个(或它自己),它们都将使用相同的变量.您还可以增加对象的大小; 即使没有使用,你的变量也会占用内存.
因此,底线是:将不同类型的变量用于它们的目的.
static函数变量.static类变量.其他任何事都会导致混乱.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |