它在代码最好的解释:差异静态常量和静态的返回时,一个静态变量
static Unit& None() { static Unit none(....); return none;}
的区别是什么来?
static const Unit& None() { static Unit none(....); return none;}
它在代码最好的解释:差异静态常量和静态的返回时,一个静态变量
static Unit& None() { static Unit none(....); return none;}
的区别是什么来?
static const Unit& None() { static Unit none(....); return none;}
在函数前的static
具有从static
函数内完全不同的。尤其是,与退货类型完全无关。这些功能的返回类型与此处相同:
Unit& None() { static Unit none(....); return none;}
const Unit& None() { static Unit none(....); return none;}
即,没有static
限定符。
因此,差异仅在Unit&
和Unit const&
之间:第一个允许修改返回值,第二个不允许。
1)对于一个类的成员,static
意味着函数不能访问实例变量和类的实例的功能;在名称空间范围函数中,static
表示函数符号不会从编译单元导出。
您正在返回对静态对象/变量的引用。所以可以给函数赋一个值,然后改变那个对象/变量的值。
第二个拒绝改变none
值:
static int& func1()
{
static int a = 1; return a;
}
static const int& func2()
{
static int a = 1; return a;
}
int main()
{
func1() = 10; // OK
func2() = 10; // error: assignment of read-only location
}
你问的区别是什么'股'&和'常量单位&'之间? – 2013-03-18 13:47:42
正如@DrewDormann所说的那样,'const'和'Unit&'一起,而不是'static'。 – Xymostech 2013-03-18 13:48:24