大家好,C / C++代码编程专家。
我偶然发现了这段代码,但我对这两个函数返回的内容感到困惑。
有什么好心的人可以帮助我吗?
我试图使代码尽可能通用和对他人有用。
ClassA*& func1() {
static ClassA* mClassA;
return mClassA;
}
ClassA* func2() {
ClassA*& mClassA = func1();
if(!mClassA) {
... // omitted some code that fill mClassA with data.
}
return mClassA;
}
[edit]还想问一下,func1()和func2()中的*&是否互相抵消?
最佳答案
ClassA*& func1()
返回通过引用在方法内部声明的静态指针。正在做:
ClassA*& x = func1()
x = NULL
会改变
mClassA
。ClassA* func2()
返回指针的副本。它将指向相同的内存,但是更改指针不会影响
mClassA
。